如何使用 fork 创建并行子进程
How to create parallel child processes using fork
我正在尝试实现下图:
我打算创建 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 正在恢复循环并分叉它自己的 children。您应该在 child 过程中的 cout
之后放置类似 break
的内容。
我正在尝试实现下图:
我打算创建 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 正在恢复循环并分叉它自己的 children。您应该在 child 过程中的 cout
之后放置类似 break
的内容。