推 ty502502: 兩次的printf都是在最後就會變55了 10/05 01:08
推 Aa841018: 子先進,5++=6,父再進,這時c=6,6--=5,最後同時印出 10/05 07:17
→ Aa841018: ! 10/05 07:17
→ raysun011081: 了解,謝謝 10/05 08:10
推 KWire: 為什麼 fork 出來的 child process 會影響全域變數? 10/05 17:34
推 KWire: man fork明確說到父子程序run in separate memory spaces 10/05 17:36
推 KWire: 所以不是 fork 完的父子程序都應該要有一份 c 的副本嗎? 10/05 17:39
推 kcilao110779: 因為全域變數是存在shared memory中,你做讀寫是在 10/05 17:40
→ kcilao110779: 這個共用的memory去存取不是在各自的seperate memor 10/05 17:40
→ kcilao110779: y 10/05 17:40
→ kcilao110779: 各自有一個c值的副本每次,可是最後c做完運算時要as 10/05 17:42
→ kcilao110779: sign回memory中 10/05 17:42
→ kcilao110779: *每次=沒錯 10/05 17:42
→ KWire: 哪個部分使 c 在父子程序間有 shared memory 的行為? 10/05 21:33
→ KWire: c 應該位於父程序記憶體的 .data 段 10/05 21:34
→ KWire: 該記憶體段fork時不是會複製給子程序,因此兩個是獨立的? 10/05 21:36
推 KWire: fork 完之後兩者看到的c就不同,或至少是 COW 的吧? 10/05 21:40
→ flirmnave: 記得課堂上 是說要考這個 會直接假設那個變數是共享的 10/05 23:58
推 nannnnn: 我也記得全域變數 父子行程是分開的兩份 有空寫一份跑跑 10/05 23:59
→ nannnnn: 看 10/05 23:59
推 plsmaop: void man是不好ㄉ寫法ㄛ 10/06 10:17
→ plsmaop: Main 10/06 10:17
→ plsmaop: g/2014/10/void-main-int-main-in-c-and-cpp/amp/ 10/06 10:17