当fork在循环中时,为什么不是平衡树?

时间:2015-10-13 19:43:06

标签: c ubuntu fork

考虑以下代码

for(i=1;i<=4;i++)
  {
     int pid=fork();
     if(pid==0)
       {
         printf("\nI am  child %d\n",i)
       }
      else
       {
         wait();
         printf("\n I am  parent %d\n",i)

       }
  }

输出

我是孩子1

我是孩子2

我是孩子3

我是父母3

我是父母2

我是孩子3

我是父母3

我是父母1

我是孩子2

我是孩子3

我是父母3

我是父母2

我是孩子3

我是父母3

所以我的观察结果是输出总是一个具有2 ^ 4-2输出的平衡树,这将是一个使用以下观察的平衡树

第一个父叉创建一个子,然后子fork创建一个子,所以孩子正在创建它的子,直到没有循环终止。 然后在非常深的时候,孩子打印我然后它的兄弟父母,我们向上打印每个兄弟姐妹。

我在观察中是对的吗?

代码更改

for(i=1;i<=4;i++)
      {
         int pid=fork();
         printf("\nvalue of i is %d",i)
      }

输出

i的值是1

i的值是2

i的值是3 纳瑟尔@纳瑟尔汗:〜$ i的值是3

i的值是2

i的值是3

i的值是1

i的值是2

i的值是3

i的值是3

i的值是3

i的值是2

i的值是3

i的值是3

naseer @ naseer-khan:〜$

有人可以解释我现在发生了什么,甚至命令提示会在某些迭代中显示出来吗?

0 个答案:

没有答案