代码改变世界

Linux -- 进程管理之僵尸进程

2019-11-25 17:19  陈心朔  阅读(264)  评论(0编辑  收藏  举报

UNIX 存在一种机制:在每个进程退出的同时,操作系统释放该进程所有资源,但仍然保留一定的信息(PID / Status / runtime),直到父进程执行 wait() / waitpid(),以便父进程得到子进程状态信息
此时这个子进程就由正常进程(Running)变成了僵尸进程(Zombie)
 
但系统中可用的进程号是有限的,大量的僵尸进程将会导致无法生成新的进程,阻碍系统正常运行
 
僵尸进程常见的处理方式有两种:

  1. 父进程wait() / waitpid() 主动结束子进程
  2. 父进程结束,此时子进程成为孤儿进程,将由 init(内核启动的第一个用户级进程,pid == 1) 接管
    (系统在每次进程结束时会扫描所有运行中的进程,查看是否有刚结束进程的子进程,如果存在则由init接管)