如何解决使用 fork 和 wait 创建多个进程
我正在尝试编写一个程序来创建如下进程:
P1 -> P2 -> P3
P1-> P4 ->P5
P2、P3需要在P4、P5之前完成
到目前为止我的代码:
#include<stdio.h>
int main()
{
for(int i=0;i<2;i++) // loop will run 2 times
{
if(fork() == 0)
{
printf("[son] pid %d from [parent] pid %d\n",getpid(),getppid());
exit(0);
}
}
for(int i=0;i<2;i++) // loop will run 2 times
wait(NULL);
}
如果 P4 和 P5 从 P1 分叉,我在 P2、P3 之后运行 P4 和 P5 时遇到困难。请帮忙
解决方法
如果你希望 P2 和 P3 在 P4 和 P5 开始之前完成,P1 应该在第一次分叉后等待它们完成,而不是在完成 2 次分叉的整个循环之后。
您正在并行启动 P2 和 P4。
这是第一个问题,除了不确定 P3 和 P5 是如何创建的,因为子进程(P2 和 P4)会立即退出而不创建它们。您可能需要从 IF 内部调用一些叉子,不是吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。