題目如下: 求最後的輸出結果: 這道題當時沒分清楚,太菜了,結果應該這樣推出來, 首先弄清楚fork()返回值,在父進程中是一個非0數,子進程中則是0, 所以pid1可以分為兩類值非0和0, (1)pid1非0,pid2同理有兩種取值,0或者非0, (2)pid1為0,表示是子進程,則pid2同樣是 ...
題目如下:
pid_t pid1,pid2; pid1=fork(); pid2=fork(); if(pid1<0||pid2<0) { printf("Fork Failed\n"); } else { printf("pid1: %d pid2: %d\n",pid1,pid2); } return 0;
求最後的輸出結果:
這道題當時沒分清楚,太菜了,結果應該這樣推出來,
首先弄清楚fork()返回值,在父進程中是一個非0數,子進程中則是0,
所以pid1可以分為兩類值非0和0,
(1)pid1非0,pid2同理有兩種取值,0或者非0,
(2)pid1為0,表示是子進程,則pid2同樣是0和非0兩種取值
綜上最後的結果應該是
x 0
x y
0 0
0 k
或者其他順序
代碼運行結果如下: