什么是僵尸进程,有何危害?怎么避免僵尸进程?
2015-01-16 23:56
711 查看
什么是僵尸进程?
当子进程(child process)先于父进程(parent process)退出,但是父进程没有调用wait/waitpid回收子进程的资源,则子进程变成僵尸进程。
但是如果该进程的父进程已经结束,那该进程就不会变成僵尸进程,因为每个进程结束的时候,系统会扫描所有运行中的进程,看看有没有哪个进程是刚
刚结束的进程的子进程,如果有就由Init来接管他,成为他的父进程。
危害?
如果父进程不调用wait/waitpid,则子进程的保留信息不会被释放,造成内核资源的无法回收,同时进程号会一直被占用,系统所能使用的进程号是
有限的,大量地产生僵尸进程将会导致系统不能产生新的进程。
怎么避免僵尸进程?
防止的办法是当父进程fork一个子进程后,必须通过wait/waitpid等函数等待子进程结束,但这会导致父进程挂起,所以通常的做法是用signal函数为
SIGCHLD安装handler,在handler函数中调用wait/waitpid函数进行回收。
当子进程(child process)先于父进程(parent process)退出,但是父进程没有调用wait/waitpid回收子进程的资源,则子进程变成僵尸进程。
但是如果该进程的父进程已经结束,那该进程就不会变成僵尸进程,因为每个进程结束的时候,系统会扫描所有运行中的进程,看看有没有哪个进程是刚
刚结束的进程的子进程,如果有就由Init来接管他,成为他的父进程。
危害?
如果父进程不调用wait/waitpid,则子进程的保留信息不会被释放,造成内核资源的无法回收,同时进程号会一直被占用,系统所能使用的进程号是
有限的,大量地产生僵尸进程将会导致系统不能产生新的进程。
怎么避免僵尸进程?
防止的办法是当父进程fork一个子进程后,必须通过wait/waitpid等函数等待子进程结束,但这会导致父进程挂起,所以通常的做法是用signal函数为
SIGCHLD安装handler,在handler函数中调用wait/waitpid函数进行回收。
相关文章推荐
- Unix/Linux系统中僵尸进程是如何产生的?有什么危害?如何避免?
- 什么是僵尸进程,如何找到并杀掉僵尸进程?
- linux僵尸进程产生的原因以及如何避免产生僵尸进程
- linux僵尸进程产生的原因以及如何避免产生僵尸进程
- 什么是僵尸进程,如何找到并杀掉僵尸进程?
- 僵尸进程的产生、危害及避免方法
- 什么是僵尸进程,如何找到并杀掉僵尸进程?
- 什么是僵尸进程,如何找到并杀掉僵尸进程?
- fork两次如何避免僵尸进程
- Linux僵尸进程产生及如何避免
- 为何要fork()两次来避免产生僵尸进程?
- Linux僵尸进程产生及如何避免
- BCUP.exe进程是什么,居然是木马,怎么处理呢
- fork两次如何避免僵尸进程
- 调用 fork 两次避免僵尸进程
- fork两次如何避免僵尸进程收藏
- 僵尸进程的避免
- fork两次如何避免僵尸进程收藏
- 避免僵尸进程
- Linux 僵尸进程产生及如何避免