问一个关于父子进程的基础问题
发表于 : 2007-10-24 21:29
不知道这样理解是否正确:
首先,系统让新的进程与旧的进程使用同一个代码段,它们的程序还是相同的,对于数据段和堆栈
段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,
虽然它继承了父进程的一切数据(当然还是有不同的),但实际上数据却已经分开,相互之间不再有影响
了,也就是说,它们之间不 再共享任何数据了。例如:
main(){
....
if(fork()){,,,exit(0);}
else{。。。。exit(0);}
....
}
是否在main中fork后运行子进程(返回一个正数pid),由于在子进程fork(返回0),所以执行else{.。。。}
子进程结束后执行if(fork()){。。。}
我的问题是,子进程到底从那里执行,是fork()调用处 ??
首先,系统让新的进程与旧的进程使用同一个代码段,它们的程序还是相同的,对于数据段和堆栈
段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,
虽然它继承了父进程的一切数据(当然还是有不同的),但实际上数据却已经分开,相互之间不再有影响
了,也就是说,它们之间不 再共享任何数据了。例如:
main(){
....
if(fork()){,,,exit(0);}
else{。。。。exit(0);}
....
}
是否在main中fork后运行子进程(返回一个正数pid),由于在子进程fork(返回0),所以执行else{.。。。}
子进程结束后执行if(fork()){。。。}
我的问题是,子进程到底从那里执行,是fork()调用处 ??