进程控制分析.pptVIP

  • 12
  • 0
  • 约1.56万字
  • 约 71页
  • 2016-11-22 发布于湖北
  • 举报
  fork()系统调用   【功能】创建一个新的子进程。   【调用格式】int fork();   【返回值】   0 向子进程返回的返回值,总为0    0 向父进程返回的返回值,它是子进程的PID。   -1 创建失败。   【说明】若fork()调用成功,则它向父进程返回子进程的PID,并向新建的子进程返回0。   图4-7描述了fork()系统调用的执行结果。 图4-7 fork系统调用的执行结果   从图4-7中可以看出,当一个进程成功执行了fork()后,从该调用点之后分裂成了两个进程:一个是父进程,从fork()后的代码处继续运行;另一个是新创建的子进程,从fork()后的代码处开始运行。由fork()产生的进程分裂在结构上很像一把叉子,故得名fork()。   与一般函数不同,fork()是“一次调用,两次返回”,因为调用成功后,已经是两个进程了。由于子进程是从父进程那里复制的代码,因此父子进程执行的是同一个程序,它们在执行时的区别只在于得到的返回值不同。父进程得到的返回值是一个大于0的数,它是子进程的PID;子进程得到的返回值为0。   若程序中不考虑fork()的返回值,则父子进程的行为就完全一样了。但创建一个子进程的目的是想让它做另一件事。所以,通常的做法是:在fork()调用后,通过判断fork()的返回值,分别为父进程和子进程设计不同的执行分支

文档评论(0)

1亿VIP精品文档

相关文档