代码之家  ›  专栏  ›  技术社区  ›  Vighnesh Pai

Ruby渗出物卡在system()行

  •  1
  • Vighnesh Pai  · 技术社区  · 6 年前

    这是我的代码片段

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

    执行此操作时,我看到输出 About to start ,并启动Appium服务器。但在那之后,我什么都没看到。它永远卡住了。有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  5
  •   Linuxios user238289    6 年前

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

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

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

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