【问题标题】:how much processes are build after running this code?运行此代码后构建了多少进程?
【发布时间】:2018-04-30 03:00:00
【问题描述】:

这个程序在 Unix 上运行:

 main(int argc,char** argv)
    {
         forkthem(5)
    }
    void forkthem(int n)
    {
         if(n>0)
         {
             fork();
             forkthem(n-1);
         }
    }

我们试图构建一个进程树,但我们并没有真正得到答案。 如果有人帮助我们,我们将非常感激。

【问题讨论】:

  • 您最好添加像printf("%s %n\n", "Insider ver #", n)sleep(100) 这样的dbg 消息,这样您就可以看到进程树。祝你好运。

标签: unix process operating-system


【解决方案1】:

当n=0时,一个进程,原来的一个。
当 n=1 时,会发生一个 fork,所以两个进程
当 n=2 时,两个 n=1 进程中的每一个都会再次分叉,所以 4 个进程
...
当 n=k 时,2**k 个进程

所以,n=5 表示 32 个进程

【讨论】:

    猜你喜欢
    • 2014-02-03
    • 2017-03-06
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多