如何使用fork()在C中运行3个命令?

我必须实现将同时(同时)运行一定数量的可执行文件(例如grep,echo等)的代码。可执行文件将以字符串形式给出,我已经对其进行了解析。该代码的要求是,一个可执行文件的输出是另一个可执行文件的输入。

我试图了解当可执行文件数量奇数时如何实现这一点。据我所知,fork函数将复制手头的代码。如果我将代码这样写:

for(int I=0; I<3; I++){
     pid_t pid = fork();
}

然后当I==0时,将产生1个孩子。当I==1时,将产生2个孩子,类似地,当I==2时,将产生4个孩子。如果我只允许执行在子进程中执行(pid==0时),我仍然总共有7次执行,比我需要的执行多4次。

liuqian125 回答:如何使用fork()在C中运行3个命令?

可能发生的事情

1) parent creates 3 children child1(i=0),child2(i=1),child3(i=2)
2) child1 creates 2 children child4 (i=1),child5(i=2)
3) child2 creates 1 child child6 (i=2)
4) child4 creates 1 child child7 (i=2)

要解决此问题,请首先注意父pid是什么

pid_t parent = getpid();

然后创建子项

for (int i = 0; i < 3; ++ii)
{
    pit_t child = fork();

如果不是父母,请分手

    if (child != parent) break;
}

您现在有一个父母和三个孩子。

本文链接:https://www.f2er.com/3097712.html

大家都在问