跳转至

杂货铺

本文档收集一些零散的知识点


Linux 进程 fork 机制

fork 直译是叉子,形象的描述了进程 fork 后分叉的样子,进程 fork 后会复制自身,形成一个新的进程,具体如下:

  1. 父进程调用 fork() 系统调用。
  2. 内核为新进程分配一个新的进程描述符。
  3. 内核会复制父进程的内存,相当于父子进程有着完全一样的虚拟内存,一样的代码逻辑,一样的文件描述符等资源,内核会为子进程分配新的物理内存空间。
  4. fork() 会为父子进程返回不同的 pid 值,父进程返回子进程的 pid,子进程返回 0,如果返回负数则表明fork失败,程序根据这个返回值判断自己是父进程还是子进程然后进入不同代码逻辑。