看板 Grad-ProbAsk 關於我們 聯絡資訊
嗨嗨 各位大大 小魯讀OS讀到fork的執行有一個疑問 一個 Process 有 data sec 和 code sec 這兩個區段 void main() { int i ; i = fork(); if(i < 0) { printf("fork failed") exit(-1) } else if (i == 0) { execlp("......") } else { wait() printf("child complete") exit(0) } } 據我所知,當執行fork()後會迸出child process 而child process 的 data sec 和 code sec 區段都是來自parent process的複製 只是都是不同記憶體位置 那麼我的疑問是 在child process 執行了execlp()這個指令後 原先的 code sec 會被載入的檔案覆蓋成新載入檔案的code sec 那麼原先從parent process複製過來的data sec呢 也會被載入的檔案覆蓋成新載入檔案的data sec 嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.138.52.33 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1475246087.A.839.html
ken52011219: 有EXECLP就會 但這裡可以比較著重在wait() 這段code 09/30 22:45
ken52011219: 很重要 假如沒有wait() 父process有可能自行先做完 09/30 22:46
ken52011219: 導致 正確結果沒有回傳到父PROCESS 程式就結束了 09/30 22:46
ken52011219: 此時 子程式還在執行 這時就稱為Zombies Process 09/30 22:47
ken52011219: 另外 反之 沒有EXECLP() 指令就不會 09/30 22:48
哇 大大太強惹>< 還有補充感激不盡 謝謝!! ※ 編輯: jerry900287 (140.138.52.33), 09/30/2016 22:50:03