###前提・実現したいこと
fork関数がプロセスされる手順を知りたくて以下のコードを書いてみた所、実行毎によって同じではないことがわかったのですがそれはなぜなのでしょうか
###該当のソースコード
C
1#include <unistd.h> 2#include <stdio.h> 3 4void forking(){ 5 6 int p_id; 7 printf("0\n"); 8 p_id = fork(); 9 10 printf("p_id at line 10 is %d\n", p_id); 11 if (p_id != 0) { 12 printf("1\n"); 13 p_id = fork(); 14 15 printf("p_id at line 15 is %d\n", p_id); 16 if (p_id == 0) { 17 printf("2\n"); 18 } 19 } 20 printf("p_id at line 20 is %d\n", p_id); 21 printf("Sayonara\n"); 22 23} 24 25int main(int argc, const char * argv[]) { 26 forking(); 27 return 0; 28}
実行結果1回目
text
10 2p_id at line 10 is 16700 31 4p_id at line 15 is 16701 5p_id at line 20 is 16701 6Sayonara 7p_id at line 10 is 0 8p_id at line 20 is 0 9Sayonara 10p_id at line 15 is 0 112 12p_id at line 20 is 0 13Sayonara
実行結果2回目
text
10 2p_id at line 10 is 16705 31 4p_id at line 10 is 0 5p_id at line 20 is 0 6Sayonara 7p_id at line 15 is 0 82 9p_id at line 20 is 0 10Sayonara 11p_id at line 15 is 16706 12p_id at line 20 is 16706 13Sayonara
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/07 20:52
2017/11/08 13:35
2017/11/08 20:21