我正在尝试实现以下图片:
我打算创建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
但似乎我获得了比我需要的更多的子进程。另一点是,并非所有子进程都来自同一个父进程,即他们有不同的父进程。
是否有可能正确地做这样的事情?如果是的话,怎么办呢?
答案 0 :(得分:3)
您的孩子正在恢复循环并分娩自己的孩子。您应该在子进程中的break
之后放置类似cout
的内容。