您的位置:首页 > 其它

什么是僵尸进程,有何危害?怎么避免僵尸进程?

2015-01-16 23:56 711 查看
什么是僵尸进程?

当子进程(child process)先于父进程(parent process)退出,但是父进程没有调用wait/waitpid回收子进程的资源,则子进程变成僵尸进程。

但是如果该进程的父进程已经结束,那该进程就不会变成僵尸进程,因为每个进程结束的时候,系统会扫描所有运行中的进程,看看有没有哪个进程是刚

刚结束的进程的子进程,如果有就由Init来接管他,成为他的父进程。

 

危害?

如果父进程不调用wait/waitpid,则子进程的保留信息不会被释放,造成内核资源的无法回收,同时进程号会一直被占用,系统所能使用的进程号是

有限的,大量地产生僵尸进程将会导致系统不能产生新的进程。

 

怎么避免僵尸进程?

防止的办法是当父进程fork一个子进程后,必须通过wait/waitpid等函数等待子进程结束,但这会导致父进程挂起,所以通常的做法是用signal函数为

SIGCHLD安装handler,在handler函数中调用wait/waitpid函数进行回收。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  僵尸进程