看板 Grad-ProbAsk 關於我們 聯絡資訊
https://i.imgur.com/wjokZQK.jpg 小弟有些地方不太清楚想請教大大們>< 1. If裡面的fork是不是不管前面的process=0或>0都要生child 所以這裡第一層的chlid和main都可以生chlid? 但是為什麼到了else if 的fork只有黃色=0的child可以生藍色child 2. Main遇到第一個fork所生的鉛筆色child >0 是因為遇到第二個黃色的fork生出child 而由原本的=0變成>0嗎? 遇到了紅色fork由>0的main和第一層child生出下面的child我可以可以理解 但是為什麼遇到綠色fork的時候 可以由第三層紅色child生出 它們不是=0不符合if的條件嗎 抱歉手機排版有點亂 麻煩大大幫忙解惑>< ----- Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.230.36.76 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1511884813.A.3F1.html
olen0622: 看得出來你程式寫得少 這是迴圈觀念上的問題 11/29 00:44
olen0622: 1.先fork()再判斷大小所以會先生child 鉛筆色進迴圈 11/29 00:46
olen0622: 黃色進else if所以只有它產藍色 11/29 00:47
barry70490: 知道這個什麼意思 但是不太會解釋 11/29 00:47
olen0622: 2.主行程回傳子行程pid 兩個行程進迴圈兩次fork 11/29 00:49
olen0622: 紅色不會再出來判斷條件 11/29 00:49
alan23273850: 解這種題目要把握的兩個觀念:1. 當程式呼叫 fork() 11/29 00:55
alan23273850: 時,會複製出一份一模一樣的程式碼,而且會從fork() 11/29 00:56
alan23273850: 執行完的地方繼續執行(parent和child都是)。 11/29 00:57
alan23273850: 2. 畫 process tree 的資料結構盡量用 Left-child, 11/29 00:58
alan23273850: right-sibling binary tree,在視覺上或觀念上都會 11/29 00:58
alan23273850: 很清楚,這樣不管題目怎麼出就都不會錯 11/29 00:59
TMDTMD2487: fork相當於一個帶有回傳值的副程式,放在if條件中要 11/29 01:03
TMDTMD2487: 先執行完並得到回傳值在判斷條件 11/29 01:03
TMDTMD2487: 話說我之前有發過文特地追蹤一題,你可以去看一下 11/29 01:04
s90210jackle: 謝謝t大s大 有看到你們詳細的追蹤後完全懂了 真的太 11/29 22:48
s90210jackle: 感激了 ㄒ_ㄒ 11/29 22:48