フォーク()関数で高度が使用されています

複数のサブプロセスのフォーク()の使用を学習するために非常に適した、今日のレビュー・中間試験を作成し、forループ内の2つのフォーク()プロシージャ、すべてのを見つけました

1  INT メイン(){
 2      INT I、X、F。 
3      、X = 1 4      のためには、(iは= 0 ; I < 3 ; I ++){F = フォーク()。
5          あれば(F == 0 ){
 6          X = X * 2 7          のprintf(" PID%D:%D \ n " 、X)(GETPID)。
8  
9      }
 10  }
 11  リターン 0 12  }
 13     

プログラム1

1    INT   メイン(ボイド){
 2          INT   I、naptime。
3          のためには、(iは= 0 ; I < 4 ; I ++)   場合(フォーク())   ブレーク4  
5        にsrand(GETPID())。
6        スリープ(naptime =ランド()%4 )。
7  
8         のprintf(" 月NOM EST <%のC>、   " 
9                           " J」はdormi%D secondes \ N愛" A '+、' I、naptime)。
10  
11       の出口(EXIT_ SUCCESS)。
12   }

プログラム2

図1のプログラムの実行結果は1であることを特徴として次の

 

 :非常にこの記事読ん???困惑の初めまでhttps://blog.csdn.net/jason314/article/details/5640969#commentBoxを、私は自分自身がどのように問題をクリアしました

回路図:

 

 

 

プログラムの実行後、図2のプロセスは次のようになります。

 

 

 

おすすめ

転載: www.cnblogs.com/mrlonely2018/p/11802948.html