Ruby提供了Process.wait
和Signal.trap
等工具来同步分叉进程。但是,如何确保只注册一级子进程?例如。如果您的主进程启动进程 A 并且那个星星另一个子进程 B 。如果我在主要流程中使用wait
/ trap
,我如何指定对 A 这样的直接子流程的兴趣,而不是像 B 那样的子流程EM>
例如:
Signal.trap("CLD") { counter += 1 }
Process.wait if counter <= 0
counter -= 1
fork { … }
我使用这种技术来限制衍生子进程的数量。但是如果子进程产生更多子进程,这会中断。