如何使用fork()在C中运行3个命令?
我必须实现同时(并发)运行一定数量的可执行文件(如grep、echo等)的代码。可执行文件将以字符串的形式给出,我已经对其进行了解析。代码的要求是,一个可执行文件的输出是另一个可执行文件的输入 我试图理解当有奇数个可执行文件时如何实现这一点。据我所知,fork函数将复制手头的代码。如果我将我的代码放在如下位置:如何使用fork()在C中运行3个命令?,c,pipe,fork,execvp,C,Pipe,Fork,Execvp,我必须实现同时(并发)运行一定数量的可执行文件(如grep、echo等)的代码。可执行文件将以字符串的形式给出,我已经对其进行了解析。代码的要求是,一个可执行文件的输出是另一个可执行文件的输入 我试图理解当有奇数个可执行文件时如何实现这一点。据我所知,fork函数将复制手头的代码。如果我将我的代码放在如下位置: for(int I=0; I<3; I++){ pid_t pid = fork(); } for(inti=0;I会发生什么 1) parent creates 3
for(int I=0; I<3; I++){
pid_t pid = fork();
}
for(inti=0;I会发生什么
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;
}