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