限制子进程和后代进程的数量



我必须递归使用fork(),但将分叉进程(包括子进程和后代)的数量限制为(例如)100。考虑以下代码片段:

void recursive(int n) {
    for(int i=0; i<n; i++) {
        if(number_of_processes() < 100) {
            if(fork() == 0) {
                 number_of_processes_minus_one();
                 recursive(i);
                 exit(0);
            }
        }
        else
            recursive(i);
     }
}

如何实现number_of_processes()number_of_processes_minus_one()?我必须使用IPC吗?我试图预先创建一个文件,将PROC_MAX写入其中并在number_of_processes()中锁定-读取-写入-解锁它,但它仍然吃掉了我所有的 pid。

我怀疑最简单的事情就是使用管道。 在分叉任何内容之前,请创建管道,将 100 字节写入写入端,然后关闭写入端。 然后,尝试在要分叉时从管道中读取一个字节。 如果您能够读取一个字节,则分叉。 如果没有,那就不要。 如果允许子分叉,则尝试使用全局变量跟踪分叉总数将失败,但管道将在所有后代中持续存在。

相关内容

  • 没有找到相关文章

最新更新