我正在尝试实现下图所示的效果:

我打算创建 N 个并行子进程。

我尝试了以下方法来创建 5 个子进程:

pid_t pid; 
for (int i = 0; i < 4; ++i)  
{ 
    pid = fork(); 
    if (pid) { 
        //Parent 
    } else if (pid == 0) { 
        cout<<"Child: "<<getppid()<<endl; 
    } else { 
        cout<<"fork error\n"; 
    } 
} 

我得到了一些像这样的输出:

Child: 3636 
Child: 3632 
Child: 28287 
Child: 3642 
Child: 28287 
Child: 28287 
Child: 3633 
Child: 28287 
Child: 28287 
Child: 28287 

但似乎我得到的子进程比我需要的要多。另一点是,并非所有子进程都来自同一个父进程,即它们有不同的父进程。

是否可以正确地执行类似的操作?如果是的话,怎么办?

请您参考如下方法:

你的 child 正在恢复循环并 fork 自己的 child 。您应该在子进程中的 cout 之后放置类似 break 的内容。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!