UNIX 存在一种机制:在每个进程退出的同时,操作系统释放该进程所有资源,但仍然保留一定的信息(PID / Status / runtime),直到父进程执行 wait() / waitpid(),以便父进程得到子进程状态信息
此时这个子进程就由正常进程(Running)变成了僵尸进程(Zombie)
?
但系统中可用的进程号是有限的,大量的僵尸进程将会导致无法生成新的进程,阻碍系统正常运行
?
僵尸进程常见的处理方式有两种:
- 父进程wait() / waitpid() 主动结束子进程
- 父进程结束,此时子进程成为孤儿进程,将由 init(内核启动的第一个用户级进程,pid == 1) 接管
(系统在每次进程结束时会扫描所有运行中的进程,查看是否有刚结束进程的子进程,如果存在则由init接管)
原文地址:https://www.cnblogs.com/chenxinshuo/p/11929113.html
时间: 2024-10-11 04:26:47