Ruby:等待任何子进程完成

时间:2014-09-03 06:13:01

标签: ruby

有没有办法等待任何(不是全部!)子进程完成?我正在写一个Rake任务,它产生了几个子进程,我想在第一个子进程完成后立即开始一个动作。

2 个答案:

答案 0 :(得分:3)

致电

Process.wait

没有参数。这等待任何子进程终止(请参阅docs

您还可以等待特定流程组的子项 - 如果您需要更多控制,则可能很有用。

答案 1 :(得分:0)

一种解决方案是,您可以使用以下内容查找进程是否仍在运行:

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

现在您可以检查流程(轮询),一旦结束,您可以根据需要触发其他流程。