如何使用fork创建并行子进程

时间:2015-03-18 12:07:25

标签: c++ linux process fork

我正在尝试实现以下图片: image1

我打算创建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

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

是否有可能正确地做这样的事情?如果是的话,怎么办呢?

1 个答案:

答案 0 :(得分:3)

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