Ruby exucution停留在system()行

时间:2018-06-06 16:43:37

标签: ruby sh

这是我的代码段

def execution_start
  puts "About to start"
  system("appium")
  puts "Done!!"
end

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

1 个答案:

答案 0 :(得分:5)

system阻塞,直到它运行的命令完成。要运行命令并立即返回,请使用Process#spawn

def execution_start
  puts "About to start"
  pid = Process.spawn("appium")
  puts "Done!!"
end

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

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