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 上使用 system
、exec
、fork
、spawn
和 Thread
的示例。
我无法重现它,但值得看看使用 system("start System.exe")
在 windows 上是否像 system("cmd &")
在 UNIX 上工作一样。可以参考启动文档here。
我有一个 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 上使用 system
、exec
、fork
、spawn
和 Thread
的示例。
我无法重现它,但值得看看使用 system("start System.exe")
在 windows 上是否像 system("cmd &")
在 UNIX 上工作一样。可以参考启动文档here。