【发布时间】:2013-06-27 20:57:36
【问题描述】:
好的,所以我一直在stackoverflow上寻找这个,并且肯定用谷歌搜索了半个小时,但我得到的答案似乎与我真正想做的事情几乎没有任何关系,希望有人能提供帮助我在这个,这是代码:
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 > 0,它仍然会被 fork,为父级创建一个子子级,并且循环将继续进行,因此它可能会以链父级结束- parent-parent-parent,而不是每个父母 2 个孩子,然后 2 个孩子 4 个等等。fork 怎么知道该怎么做?
例如,假设我想做一棵树,并在最后一层(级别)附加一个孩子,我该如何开始?
我对 fork 的理解正确吗?如果不是,请解释一下,网上有很多教程,但它们似乎都使它变得比它可能的复杂得多。
干杯,谢谢 对我好点,英语不是我的母语。
【问题讨论】: