gpt4 book ai didi

c - fork 二叉树, fork 功能问题

转载 作者:行者123 更新时间:2023-11-30 17:50:18 27 4
gpt4 key购买 nike

好吧,所以我一直在 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 是主要父级,从这里开始 fork

1 是 0 中父级的 2 个子级

2 是 1 中 2 个 parent 的 4 个 child

创建对称树。本质上我有几个问题:

  1. Switch 在每个循环上执行 fork,因此理论上如果 fork > 0,它仍然会被 fork ,为父级创建子子级,并且循环将继续进行,因此它最终可能会得到一个链父级 -父级-父级-父级,而不是每个父级有 2 个子级,然后是 2 个 4 个子级,等等。 fork 如何知道要做什么?

  2. 例如,我想做一棵树,在最后一层(级别)附加一个子级,我该如何开始?

我对 fork 的理解正确吗?如果没有,请解释一下,网上有很多教程,但它们似乎都使它变得比实际情况更复杂。

干杯,谢谢请善待我,英语不是我的母语。

最佳答案

这段代码基本上会 fork 炸弹,原因如下:

当进程到达第一个fork时,它将为子进程返回 0,为父进程返回正数(子进程的 PID)。因此,父级的 cCount 实例永远不会增加,因此循环将永远运行。

关于c - fork 二叉树, fork 功能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17353042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com