我有一个ruby脚本,我需要它来运行另一个程序。
运行程序后,脚本的其余部分无法运行。例如:
# some ruby that gets run
exe = "Something.exe"
system(exe)
# some ruby that doesnt run
我也尝试过使用Open3.popen2e(cmd)
和Open3.popen3(cmd)
,但也一样。
任何人都可以帮助我了解这里发生了什么以及如何解决它?
注意:我正在使用Windows
答案 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上使用system
,exec
,fork
,spawn
和Thread
找到几个示例。
我无法重现它,但值得一看的是,在system("start System.exe")
这样的Windows上使用system("cmd &")
是否可以在UNIX上运行。您可以参考开始文档here。