[理工] [OS] fork()與execlp()

作者: jerry900287 (滷蛋)   2016-09-30 22:34:43
嗨嗨 各位大大
小魯讀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 嗎?
作者: ken52011219 (呱)   2016-09-30 22:45:00
有EXECLP就會 但這裡可以比較著重在wait() 這段code很重要 假如沒有wait() 父process有可能自行先做完導致 正確結果沒有回傳到父PROCESS 程式就結束了此時 子程式還在執行 這時就稱為Zombies Process另外 反之 沒有EXECLP() 指令就不會

Links booklink

Contact Us: admin [ a t ] ucptt.com