引用:当一个进程调用了fork以后,系统会创建一个子进程.这个子进程和父进程不同的地方只有他的进程ID和父进程ID不同,其他的都是一样.就象进程克隆(clone)自己一样.一旦子进程被创建,父子进程一起从fork处继续执行,相互竞争系统的资源,理解这点非常重要。这里又可以讨论关于进程阻塞的问题,这里就不详细讨论了。
当然创建两个一模一样的进程是没有意义的.为了区分父进程和子进程,我们必须跟踪fork的返回值. 当fork掉用失败的时候(内存不足或者是用户的最大进程数已到)fork返回-1,否则fork的返回值有重要的作用.
对于父进程fork返回子进程的ID,而对于子进程fork返回0.这就是为什么说fork调用一次而返回2次。这里涉及到系统对进程的调度算法的不同造成CPU时间片分配的不确定性,父子进程会进行资源竞争,因而fork调用一次而返回2次也是必要的。我们也是根据这个返回值来区分父子进程的.
本篇算是抛砖引玉,欢迎批评指正!
[ 本帖最后由 gxf 于 2007-10-22 18:01 编辑 ]


qwdzq 于 2008-03-13 12:11:07发表:
要是能举个简单的例子就好了
gxf 于 2007-10-22 22:20:00发表:
呵呵,确实皮毛的概念问题。继续学习,最近学校刚好在上操作系统
原理的课程,我得加油了。希望“beautiful ”大哥多多指教
[ 本帖最后由 gxf 于 2007-10-22 22:35 编辑 ]
beautiful 于 2007-10-22 20:26:09发表:
小小懂一点,不过是概念级的