进程控制---孤儿进程和僵尸进程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程控制---孤儿进程和僵尸进程相关的知识,希望对你有一定的参考价值。
考虑下面两种情况:
- 第一种:父进程 先于 子进程 退出。
发生此种情况的时候,子进程便成为 孤儿进程。系统中的所有孤儿进程都会被 init 进程领养,init 进程的进程 ID 始终为 1。系统内当有进程终止的时候,内核会去检查所有的进程是否为该终止进程的子进程,如果是,则将其父进程 ID 修改为 1,即被 init 进程领养。init 进程保证会去 wait 每个子进程的退出。这样一来,就可以保证系统内的所有进程都有父进程。当一个孤儿进程被 init 进程领养的时候,孤儿进程将会由前台进程转为后台进程,也就是说敲入 ctrl+c 是终止不了该进程的。
- 第二种:子进程 先于 父进程 退出
当子进程 先于 父进程 退出的时候,如果此时父进程没有去使用 wait 或者 waitpid 函数去等待子进程退出,那么子进程的 内核资源(PCB)将不能被回收,则此子进程称为僵尸进程。由此可见,如果出现大量的僵尸进程,那么那些无法回收的 PCB 会占用内核的资源,也可以称为一种内存泄漏。
以上是关于进程控制---孤儿进程和僵尸进程的主要内容,如果未能解决你的问题,请参考以下文章