2014-09-03 122 views
0

有沒有辦法等待任何(不是全部!)子進程完成?我正在編寫一個Rake任務,它產生多個子進程,並且我希望在第一個子進程結束後立即開始一個操作。Ruby:等待任何子進程完成

回答

1

只需撥打

Process.wait 

不帶任何參數。這也是在等待任意子進程終止(見docs

您也可以等待一個特定的進程組的孩子 - 可能是有用的,如果你需要更多的控制

0

一種解決方案可能是,你可以找到,如果一個進程正在使用類似仍在運行:

begin 
    Process.getpgid(pid) 
    true 
rescue Errno::ESRCH 
    false 
end 

現在你可以把支票上的過程中(輪詢),一旦其過,你可以觸發其他根據需要處理。