ruby:我如何获得运行的子进程(fork)的数量

时间:2010-07-12 21:52:54

标签: ruby fork subprocess

我想将子进程数限制为3.一旦命中3,我就等到其中一个进程停止然后再执行一个进程。我正在使用Kernel.fork来启动这个过程。

如何获取正在运行的子进程数?或者有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

一个很好的问题,但我认为Ruby中没有这样的方法,至少在标准库中没有。那里有很多宝石......

这个问题虽然听起来像是Mutex类的工作。查看条件变量here部分,了解如何使用Ruby的互斥锁。

答案 1 :(得分:0)

我通常要完成Queue个任务,然后让几个线程消耗任务,直到他们收到指示工作结束的项目。在Thread库下的“Programming Ruby”中有一个例子。 (我不确定是否应该将示例复制并粘贴到Stack Overflow上 - 抱歉)

答案 2 :(得分:0)

我的解决方案是使用陷阱(“CLD”),在子进程结束时捕获SIGCLD并减少正在运行的进程的计数器(全局变量)。