2017-09-13 82 views
0

我有一個紅寶石腳本中途通過我需要它來運行另一個程序。紅寶石運行外部程序停止腳本

運行程序後,腳本的其餘部分不會運行。例如:

# some ruby that gets run 

exe = "Something.exe" 
system(exe) 

# some ruby that doesnt run 

我一直在使用Open3.popen2e(cmd)Open3.popen3(cmd),但其同樣也試過。

任何人都可以幫助我瞭解這裏發生了什麼,以及如何解決它?

注:我使用Windows

+0

您的Something.exe是否完成其執行?看起來好像你的ruby腳本在等待命令完成之前繼續執行 – mabe02

+0

程序仍然在後臺運行,所以我真的不想讓ruby等待,我只是希望它發送命令並繼續。 – Brad

回答

1

嘗試運行在一個新線程Something.exe

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

+0

這樣做了,謝謝。 – Brad

1

在要異步運行System.exe並繼續而不必等到情況下完成,你可以使用spawn或多線程。

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

根據這一previous answer,這應該在Windows上工作,以及(在fork或其他方法不)。

this article你可以找到使用systemexecforkspawnThread在Unix幾個例子。

我無法複製它,但是值得一提的是,如果在Windows上使用system("start System.exe"),例如system("cmd &")可以在UNIX上工作。你可以參考開始文檔here

+0

感謝您的回答,這非常有幫助 – Brad

+0

歡迎您 – mabe02