Ruby exucution卡在system()行

Vig*_*Pai 1 ruby sh

这是我的代码片段

def execution_start
  puts "About to start"
  system("appium")
  puts "Done!!"
end
Run Code Online (Sandbox Code Playgroud)

执行此操作时,我看到输出About to start,并启动了appium服务器.但在那之后,我没有看到任何事情发生.它永远停滞不前.任何的想法?

Lin*_*ios 5

system阻止它运行的命令完成.要运行命令并立即返回,请使用Process#spawn:

def execution_start
  puts "About to start"
  pid = Process.spawn("appium")
  puts "Done!!"
end
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用返回的PID来监视进程是否已完成执行,以及程序中稍后的退出代码.

(请注意,根据文档,您Process#wait最终需要PID,或者至少注册不感兴趣,Process#detach以防止子进程成为僵尸.)