如何解决那个 fork 的进程树是什么?
我刚开始用叉子,这个让我很困惑。 我这里有脚本:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main () {
int x=3;
int i;
for(i=0; i<=2;i++){
fork();
x=x-1;
printf(“process,%x\n”,x);
}
return 0;
}
和这里的输出: enter image description here
现在,我尝试使用 x 的附加值构建进程树,但感觉并不好。 我以为进程数是 8,但正如输出所说,它们是 14。 有人可以帮我处理流程树吗!? 那是我的:
解决方法
您完全正确,因为有 8 个进程 - 原始父进程和 7 个子进程。您只是忽略了打印输出的数量不等于进程的数量,因为每个父级在 fork 之后继续执行多次 printf
:原始父级和第一个子级各执行 3 次,另外两个子级各执行 2 次,剩下的四个孩子只有一次; 3 + 3 + 2 + 2 + 1 + 1 + 1 + 1 = 14。
father x=3 i=0 fork x=2 print i=1 fork x=1 print i=2 fork x=0 print
ch1 ch2 ch3
child1 x=2 print i=1 fork x=1 print i=2 fork x=0 print
ch4 ch5
child2 x=1 print i=2 fork x=0 print
ch6
child3 x=0 print
child4 x=1 print i=2 fork x=0 print
ch7
child5 x=0 print
child6 x=0 print
child7 x=0 print
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。