Ruby 执行卡在 system() 行

标签 ruby sh

这是我的代码片段

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

执行此命令时,我看到输出 About to start,appium 服务器已启动。但在那之后,我没有看到任何事情发生。它永远卡住了。有什么想法吗?

最佳答案

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

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

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

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

关于Ruby 执行卡在 system() 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50725536/

相关文章:

ruby - Ldap gem 在 Rails 中抛出与服务器异常的连接

ruby - 如何配置 asciidoctor-gradle-plugin 来处理 plantuml?

php - 通过 PHP 执行 .sh 脚本

bash - 关于流重定向 : `cat x > y <` 的 bash 谜语

linux - 在 bash 脚本中,如何在 while 循环条件中使用函数退出状态

ruby - Rails 中的 Shibboleth 身份验证

ruby - 使用池时如何释放 Sequel 连接

ruby - 在 Ruby 中解析 A​​pache 格式的 URL

file - 在 Unix 中如何确定文件名是否有任何扩展名?

python - 如何更改数百个基因组中的染色体名称?