[理工] 作業系統

作者: raysun011081 (sanfrain011081)   2018-10-05 01:04:41
http://i.imgur.com/HkWsSrg.jpg
想請問為什麼會有55這個組合,謝謝
作者: plsmaop (plsmaop)   2018-10-06 10:17:00
void man是不好ㄉ寫法ㄛMainhttps://www.google.com.tw/amp/s/www.peterdavehello.org/2014/10/void-main-int-main-in-c-and-cpp/amp/https://bit.ly/2BYUTL2
作者: ty502502   2018-10-05 01:08:00
兩次的printf都是在最後就會變55了
作者: Aa841018 (andrew)   2018-10-05 07:17:00
子先進,5++=6,父再進,這時c=6,6--=5,最後同時印出!
作者: raysun011081 (sanfrain011081)   2018-10-05 08:10:00
了解,謝謝
作者: KWire (Zbra)   2018-10-05 17:34:00
為什麼 fork 出來的 child process 會影響全域變數?man fork明確說到父子程序run in separate memory spaces所以不是 fork 完的父子程序都應該要有一份 c 的副本嗎?
作者: kcilao110779 (kcilao)   2018-10-05 17:40:00
因為全域變數是存在shared memory中,你做讀寫是在這個共用的memory去存取不是在各自的seperate memory各自有一個c值的副本每次,可是最後c做完運算時要assign回memory中*每次=沒錯
作者: KWire (Zbra)   2018-10-05 21:33:00
哪個部分使 c 在父子程序間有 shared memory 的行為?c 應該位於父程序記憶體的 .data 段該記憶體段fork時不是會複製給子程序,因此兩個是獨立的?fork 完之後兩者看到的c就不同,或至少是 COW 的吧?
作者: flirmnave (焰離雨星)   2018-10-05 23:58:00
記得課堂上 是說要考這個 會直接假設那個變數是共享的
作者: nannnnn (nannnnn)   2018-10-05 23:59:00
我也記得全域變數 父子行程是分開的兩份 有空寫一份跑跑看

Links booklink

Contact Us: admin [ a t ] ucptt.com