【发布时间】:2026-02-12 18:45:02
【问题描述】:
我正在尝试实现下图:
我打算创建 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
但似乎我得到的子进程比我需要的多。还有一点是,并非所有子进程都来自同一个父进程,即它们有不同的父进程。
是否可以正确地做类似的事情?如果是,怎么做?
【问题讨论】:
-
一个建议:你注意到你的
"fork error\n"是一个死代码吗?另外,cout是c++。 -
死码是什么意思?对于
cout在c++无所谓 -
检查您的
if..else循环条件。失败时,fork()返回-1。您必须相应地更改您的条件检查。 -
“因为 cout 在 c++ 中并不重要”...这是真的,但你说你在 c 中,根本不存在
cout