我有一个 ruby 脚本,中途我需要它来运行另一个程序。
运行程序后,脚本的其余部分不会运行。例如:
# some ruby that gets run
exe = "Something.exe"
system(exe)
# some ruby that doesnt run
我也尝试过使用Open3.popen2e(cmd)
,Open3.popen3(cmd)
但它是一样的。
谁能帮我理解这里发生了什么以及如何解决它?
注意:我使用的是窗户
尝试Something.exe
在新线程中运行:
Thread.new { system("Something.exe") }
如果您想System.exe
异步运行并继续而不等待它完成,您可以使用 spawn 或多线程。
pid = spawn('System.exe')
Process.detach(pid)
根据这个先前的答案,这也应该在 Windows 上工作(而fork
或其他方法不工作)。
在本文中,您可以找到几个在 Unix 上使用system
、 exec
、fork
和spawn
的示例。Thread
我无法重现它,但值得看看system("start System.exe")
在 Windows 上使用是否像system("cmd &")
在 UNIX 上一样有效。您可以在此处参考开始文档。