[理工] 108交大計系5

看板Grad-ProbAsk作者 (changchang)時間5年前 (2020/10/26 00:17), 5年前編輯推噓1(102)
留言3則, 1人參與, 5年前最新討論串1/2 (看更多)
題目如下 答案是A https://i.imgur.com/KtILUJo.jpg
1. 想請問這題程式碼中的a是屬於global variable,當child process經由fork行程後,也 會共享同一個a。fork之後接下去執行時,應該會因為parent preocess與child process執 行順序的不同而造成a值有不同的可能對吧(race condiction發生)? 2. 我把程式碼拿去執行,卻都是4 3 3 2 2 1這個順序,而沒有上述的情形發生,想請問為 什麼呢? 這個想法影響到我對於 (a) 跟(b)的選擇,感謝大家。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.77.140.137 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1603642655.A.FE6.html ※ 編輯: waes81224 (119.77.140.137 臺灣), 10/26/2020 00:35:12

10/26 01:01, 5年前 , 1F
fork會copy一份parent的資料給child,因此child有自己
10/26 01:01, 1F

10/26 01:01, 5年前 , 2F
的一份資料來自於parent的copy,所以變數不是共享的,c
10/26 01:01, 2F

10/26 01:01, 5年前 , 3F
hild更改a的內容也不會影響到parent。
10/26 01:01, 3F
感謝大大!!我懂了 variable a 要寫在 main()外面才會有共享變數大問題發生。 ※ 編輯: waes81224 (119.77.140.137 臺灣), 10/26/2020 12:35:18
文章代碼(AID): #1VbQKV_c (Grad-ProbAsk)
文章代碼(AID): #1VbQKV_c (Grad-ProbAsk)