好吧,所以我一直在看堆栈溢出,绝对谷歌搜索半小时,但我似乎得到的答案几乎与我实际想做的事情无关,希望有人会帮助我在这一个,继承人的代码:
int cCount = 0;
while(cCount < 2)
{
switch(fork())
{
case 0:
cCount++;
break;
case -1:
printf("Failed");
break;
default:
break;
}
}
return;
现在对于出现的问题,这段代码假设创建一个有3个级别(0,1,2)的树,
0是它开始分叉的主要父母
1是0的父母的2个孩子
2是1个2个父母中的4个孩子
创建对称树。基本上虽然我有几个问题:
Switch在每个循环上执行fork,所以理论上如果fork&gt; 0,它仍然会分叉为父级创建子子级,循环将继续运行,因此最终可能会有一个父级父级父级父级,而不是每个父级2个子级,然后是2个子级等。 fork如何知道该怎么做?
假设我想在最后一层(级别)做一个附加了一个孩子的树,例如,我该如何开始?
我能正确理解叉子吗?请解释一下,如果不是,网上有很多教程,但它们似乎都比它更复杂。
干杯,谢谢 对我好,英语不是我的母语。
答案 0 :(得分:0)
这段代码基本上会分叉炸弹,这就是原因:
当进程命中第一个fork
时,它将为子进程返回0,为父进程返回正数(子进程的PID)。因此,父cCount
的实例永远不会递增,因此循环将永远运行。