我可能正在接近這個錯誤的方向,所以任何幫助,將不勝感激。在Ruby中產生一個獨立的線程或進程
我有一個Ruby腳本,其中包括啓動一個可執行文件。我想啓動這個可執行文件 - 目前正在使用系統「」觸發 - 然後繼續執行腳本。腳本完成後,我希望它退出但保持可執行文件正在運行。
本來我有以下
# Do some work
# Start the executable
system("executable_to_run.exe")
# Continue working
但executable_to_run.exe是阻止可執行文件和系統「」將不會退出,直到可執行運行完成後,(這是我不希望它)
所以我現在有這樣的事情(大幅度裁減)
# Do some work
# Start the executable on it's one thread
Thread.new do
system("executable_to_run.exe")
end
# Continue working
這種運作良好,在我的腳本可以繼續運行,而線程運行在日可執行e背景。不幸的是,當我的腳本退出時,可執行線程仍在運行,直到線程退出纔會退出。如果我殺死可執行文件,線程退出並且腳本退出。
所以我需要做的就是觸發「executable_to_run.exe」,只是讓它在後臺運行。
我在Windows上使用Ruby 1.8.7,這意味着fork是未實現的。我無法升級到1.9,因爲我需要首先解決內部和外部團隊依賴問題(而且這種問題不會很快完成)。
我已經試過
- 通過「開始」 命令運行的進程,但是這仍然塊
- 可執行線程 上調用Thread.kill但它仍然需要可執行 被殺害
那麼,這是我可以在Ruby中做的事情,我只是缺少一些東西或者我有一個問題,因爲我不能使用叉?
在此先感謝
如果'system(「啓動executable_to_run.exe」)'塊,一些東西搞砸了。 「開始」的一點是它開始一個新的獨立過程。 – cHao 2011-04-08 10:21:21
Ruby 1.8.7不支持Windows上的本機線程,因爲Windows選擇不正確實現POSIX線程。你知道這一點。做這個工作的唯一方法是說服Windows在'system'調用中啓動一個獨立的進程。你需要一個Windows而不是Ruby人來回答這個問題。 – 2011-04-08 17:14:00