看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《s90210jackle (jacklen)》之銘言: : 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 閒來無事就來賺點微薄的 P 幣 ~ https://i.imgur.com/aCFOMDK.jpg 每個節點 fork 出去時 左側是回傳值(child process id) > 0 的部分,也就是 parent process,而右側是回傳值 == 0 的部分,也就是 child process。 運用 left child-right sibling 的二元樹就能有效辨別 parent 和 child 兩個 case。 如果考試時忘記 fork() 回傳 > 0 或 == 0 是 parent process 還是 child process, 其實也不用慌張,因為反正 fork() 這個函式就只是產生多一個新的 process,你只要 確保在畫樹的時候統一 > 0 在一邊,== 0 在另外一邊,如此一來最後的 process 總數 仍然會是一樣的。 因此這題最後總共曾經產生了 14 個 process,如果連 main 自己也算進去的話。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.99 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1511943175.A.97B.html
s90210jackle: 謝謝a大這麼詳細的圖 我了解了 ㄒ_ㄒ 11/29 22:49