Ruby 运行 外部程序停止脚本

Ruby run external program stops script

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

在 运行 编译程序后,脚本的其余部分没有得到 运行。例如:

# some ruby that gets run

exe = "Something.exe"
system(exe)

# some ruby that doesnt run

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

任何人都可以帮助我了解这里发生的事情以及如何解决它吗?

注意:我正在使用 windows

尝试在新线程中 运行 Something.exe

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

如果您想 运行 您的 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