-
父进程先终止:
Linux系统保证每个进程都有一个父进程,若父进程比子进程先终止,则该父进程的所有子进程的父进程都变为init进程。其执行顺序大致如下:在一个进程终止时,内核逐个检查所有活动进程,以判断它是否是正要终止的进程的子进程,如果是,则该进程的父进程ID就更改为1(init进程的ID);
以下图所示的程序为例:
-
子进程先终止:
内核为每个终止子进程保存了一定量的信息,所以当终止进程的父进程调用wait或waitpid时,可以得到有关信息。这种信息至少包括该进程的ID、终止状态等信息。
一个已经终止、但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占有的资源)的进程被称为僵死进程。
有init领养的进程不会称为僵死进程,因为只要init的子进程终止,init就会调用一个wait函数取得其终止状态。这样也就防止了在系统中有很多僵死进程。
Linux下父进程子进程先后终止的不同处理
最新推荐文章于 2023-05-18 01:01:14 发布