以下对进程相关的几个概念进行解释.
什么是孤儿进程,僵尸进程
子进程是在父进程调用fork函数后生成的.子进程将其终止状态返回给父进程.但是如果父进程在子进程之前终止,那么会发生什么呢?对于父进程已经终止的所有进程,他们的父进程都会变成init进程,称这些进程被init进程收养。
操作过程大致为:在一个进程终止时,内核逐个检查所有活动进程,以判断它是否是正要终止进程的子进程,如果是,将该进程的父进程ID改为1(init进程的ID)。
子进程终止时,它与父进程之间的关联还会保持,直到父进程也正常终止或父进程调用wait才告结束.尽管它已经不再运行了,但是它仍然存在于系统中.内核为每个终止子进程保存了一些信息,当终止进程的父进程调用wait或waitpid时,可以得到这些信息.这些信息包括进程ID,该进程的终止状态以及进程使用的CPU时间总量。
这样一个已经终止,但其父进程尚未对其进程善后处理(获取终止子进程的有关信息,释放它仍占用的资源)的进程被称为僵尸进程。
如果子进程先于父进程终止,那么子进程会成为一个僵尸进程。若此时,父进程异常终止,则子进程会被init进程接管,即init进程成为该(已结束)子进程的父进程,并负责对其进行善后处理。
进程同步与进程互斥的区别与联系
https://zhuanlan.zhihu.com/p/69581607互斥量,信号量,锁等概念