Ruby运行外部程序停止脚本

时间:2017-09-13 16:02:36

标签: ruby windows system popen3

我有一个ruby脚本,我需要它来运行另一个程序。

运行程序后,脚本的其余部分无法运行。例如:

# some ruby that gets run

exe = "Something.exe"
system(exe)

# some ruby that doesnt run

我也尝试过使用Open3.popen2e(cmd)Open3.popen3(cmd),但也一样。

任何人都可以帮助我了解这里发生了什么以及如何解决它?

注意:我正在使用Windows

2 个答案:

答案 0 :(得分:1)

尝试在新主题中运行Something.exe

Thread.new { system("Something.exe") }

答案 1 :(得分:1)

如果您想要异步运行System.exe并继续而不等待它完成,您可以使用spawn或多线程。

pid = spawn('System.exe')
Process.detach(pid)

根据此previous answer,这也适用于Windows(虽然fork或其他方法不适用)。

this article中,您可以在Unix上使用systemexecforkspawnThread找到几个示例。

我无法重现它,但值得一看的是,在system("start System.exe")这样的Windows上使用system("cmd &")是否可以在UNIX上运行。您可以参考开始文档here