【发布时间】:2019-11-15 05:24:03
【问题描述】:
我必须实现同时(并发)运行一定数量的可执行文件(例如 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 次。
【问题讨论】:
-
管道中的所有子进程都应该是兄弟进程;它们之间应该没有父/子关系。