2013-01-14 55 views
2

我想在Ruby中創建用於運行和與其他程序交互的s子進程,並且我需要使用Process.spawn,因爲Open3.popen3在Windows中不起作用。 Open3.popen3爲您提供了一個很好的等待線程對象,允許您通過wait_thr.status來檢查進程是否已完成,一旦完成,它允許您通過wait_thr.value.exitstatus獲取它的退出代碼。在ruby中獲取進程狀態並從進程ID退出代碼

Process.spawn只給你pid,所以我需要一種方法從進程ID獲取數據。我看過ProcessKernel模塊,什麼都沒發現。 Process::Status有我需要的一切,但我找不到任何有關如何從pid創建一個的信息。

如何知道流程何時完成以及退出狀態如何?

回答

1

我相信你可以使用win32-api gem

然後,您可以使用GetExitCodeProcess函數從Win32 API。

+0

我明白了......好吧,如果我需要添加一個需求,我不妨找到一個適用於Windows的Open3實現。我也在Windows上嘗試過'Process.spawn',但它不工作......但是,無論如何,謝謝! –

+0

也許嘗試什麼給[這裏](http://stackoverflow.com/questions/5593616/spawning-an-independent-thread-or-process-in-ruby) –

相關問題