0

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

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

# some ruby that gets run

exe = "Something.exe"
system(exe)

# some ruby that doesnt run

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

谁能帮我理解这里发生了什么以及如何解决它?

注意:我使用的是窗户

4

2 回答 2

2

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

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

于 2017-09-13T16:16:07.543 回答
1

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

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

根据这个先前的答案,这也应该在 Windows 上工作(而fork或其他方法不工作)。

本文中,您可以找到几个在 Unix 上使用systemexecforkspawn的示例。Thread

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

于 2017-09-13T16:16:46.613 回答