[問題] fork問題

看板C_and_CPP (C/C++)作者 (胡椒)時間12年前 (2013/10/23 13:18), 編輯推噓1(105)
留言6則, 5人參與, 最新討論串1/1
int value=10; int main() { pid.t,pid; pid=fork; if(pid==0) { value+=15; printf( "CHILD value=%d",value);/*LINE A*/ } else if(pid>0) { wait(NULL); value+=3; printf( "Parent value=%d",value);/*LINE B*/ exit(0); } } 一個關於fork的程式片段 在LINE A很明確是child的value是10+15=25 但是在LINE B這裡 我的認知是在parent不會進入if. 而且parent跟child所用的value是不一樣的. 所以value還是10 在else if 裡面的value+=3以後印出來的值應該是13 但是正解是寫18 請問是怎麼出現的? 手上沒有環境可以執行fork....感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.23.114

10/23 13:40, , 1F
用online compiler
10/23 13:40, 1F

10/23 14:04, , 2F
CHILD value=25Parent value=13 我這邊的結果
10/23 14:04, 2F

10/23 14:08, , 3F
是不是印錯? 怎樣都不會18啊?? 就算通通加起來也是28...
10/23 14:08, 3F

10/23 14:51, , 4F
我也是怎麼想都不是18...那應該是正解錯了
10/23 14:51, 4F

10/23 14:51, , 5F
所以我的認知13應該是沒問題.謝謝幾位^.^
10/23 14:51, 5F

10/23 20:11, , 6F
fork() ?
10/23 20:11, 6F
文章代碼(AID): #1IPrmSNM (C_and_CPP)
文章代碼(AID): #1IPrmSNM (C_and_CPP)