[理工] [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