【问题标题】:How to create parallel child processes using fork如何使用 fork 创建并行子进程
【发布时间】: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" 是一个死代码吗?另外,coutc++
  • 死码是什么意思?对于coutc++ 无所谓
  • 检查您的if..else 循环条件。失败时,fork() 返回-1。您必须相应地更改您的条件检查。
  • “因为 cout 在 c++ 中并不重要”...这是真的,但你说你在 c 中,根本不存在 cout

标签: c++ linux process fork


【解决方案1】:

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

【讨论】:

    最近更新 更多