首先大家知道什么叫做僵死进程吗????????????
1》僵死进程的定义(也叫僵尸进程):
僵死进程其实就是指在子进程退出时,父进程并未对其发出的SIGCHLD的信号进行适当处理,导致子进程停留在僵死状态等待其父进程为其收尸,这个状态下的子进程就是僵死进程;僵死进程它不占用内存空间,也没有任何可执行的代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其它进程收集;如果僵死进程的父进程结束了,那么init进程自动会接手这个子进程,为他收尸,但是如果父进程是一个循环,不会结束,那么子进程就会一直保持僵死进程状态,这就是为什么系统中有时会有很多僵死进程。
那么怎么查看僵死进程?????????????????
2》僵死进程得到查看:
利用命令ps查看当前进程,其中有标记z的进程就是僵死进程
那么僵死进程会带来什么危害呢?????????????
3》僵死进程的危害:
如果父进程不调用wait()/waitpid()的话,那么存在于那个位置的信息就不会被释放,它的pcb就永远被占用,但是系统的进程表的容量是有限的,所能使用的进程号也是有限的,所以如果产生了大量的僵死进程,将因为没有可用的进程而导致系统不能产生新的进程;所以,僵死进程不仅占用系统的内存信息,还影响系统的性能,如果大量产生,还会导致系统瘫痪
怎样处理僵死进程???????????????????
4》僵死进程的处理
(1)改写父进程
在子进程死后要为他收尸,具体做法是接管SIGCHLD信号,子进程死后,会发出SIGCHLD信号给父进程,父进程收到此信号后,执行waitpid()函数为子进程收尸
这样基于的原理:就算父进程没有调用wait,内核也会向