Linux进程全解4——fork创建子进程

以下内容源于朱有鹏《物联网大讲堂》课程的学习整理,如有侵权,请告知删除。


1、为什么要创建子进程?

(1)每一次程序的运行都需要一个进程;

(2)多进程实现宏观上的并行。


2、fork的内部原理

(1)进程的分裂生长模式

  • 如果操作系统需要一个新进程来运行一个程序,那么操作系统会用一个现有的进程来复制生成一个新进程。注意是复制后再修改,而不是重新创建(代价大)。
  • 老进程叫父进程,复制生成的新进程叫子进程。

Linux进程全解4——fork创建子进程

(2)fork的演示

Linux进程全解4——fork创建子进程

Linux进程全解4——fork创建子进程

  • fork函数调用一次,会返回2次,因为父子都有相同的一份代码,进程同时被运行。
  • 使用fork函数,返回值等于0,则表明是子进程;返回值大于0,则表明是父进程
  • 典型的使用fork的方法:区分当前是在子进程还是在父进程,即使用fork后用if判断返回值,如果返回值大于0时就是在父进程中,等于0时就是在子进程中,然后在各自的{  }里再做操作。
  • fork的返回值在子进程中等于0,在父进程中等于(本次fork创建的)子进程的进程ID。


3、关于子进程

(1)子进程和父进程的关系

  • 子进程一旦建立,子进程不再依赖于父进程。

(2)子进程有自己独立的PCB

(3)子进程被内核同等调度