2017-11-16 5 views
-1

このプログラムは、UNIX上で実行されている:このコードを実行した後にどのくらいのプロセスがビルドされますか?

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

我々は、プロセスのツリーを構築しようとしましたが、私たちは本当に答えを得ませんでした。 誰かが私たちを助けてくれたらとても感謝しています。

+0

を意味しますが、' printfの( "%sの%N \ N"、 "#版インサイダー"、N)のようなDBGのmesgsを追加するとよいでしょうし、プロセスツリーを見ることができるように、おそらく 'sleep(100)'を実行します。がんばろう。 – shellter

答えて

1

n = 0の場合、1つの処理、元の処理です。
N = 1、そしてあるフォークが発生したので、2つのプロセスを再び2つのn = 1つのプロセスフォークの次に
n = 2で、それぞれ、SO 4つの工程
...
N = K、2 ** `kはnは、だから、

を処理= 5は、32個のプロセス

関連する問題