僵死状态&&僵尸进程
2017-08-04 22:01
232 查看
首先表明一下:僵死状态是每个子进程的正常状态,但僵死进程是一种有毒有危害的进程。
孤儿进程:父进程退出,子进程仍在运行,最后会被1号init领养回收
注:ps -el 查看进程状态
(1)僵死状态&僵尸进程:
fork()之后为了让父进程知道子进程的退出, 所以UNⅨ提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息, 就可以得到。这种机制就是: 在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process等)。直到父进程通过wait / waitpid来取时才释放.
但这样就导致了问题,如果进程不调用wait / waitpid的话,那么保留的那段信息就不会释放,其进程号就会一直被占用,就变成僵尸了
(2)僵尸有毒
(2.1)系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程.
(2.2) 你用root的kill -9 也删不了。
(2.3)内存可能泄露
(3)暴力解决
杀死父进程,把它变成孤儿进程,让init 1号进程来领养。
(4)避免方法
(4.1) 让父进程wait/waitpid,
(4.2) 让父进程使用signal函数,为SIGCLILD的写handler,在handler里wait
(4.3) 如果不关心子进程的结果,父进程使用signal函数对SIGCLILD信号的处理为SIG_IGN忽略。
(4.4)化暴力为技巧:fork两次,父进程fork一个子进程,然后继续工作,子进程fork一 个孙进程后退出,那么孙进程被init接管,孙进程结束后,init会回收。
孤儿进程:父进程退出,子进程仍在运行,最后会被1号init领养回收
注:ps -el 查看进程状态
(1)僵死状态&僵尸进程:
fork()之后为了让父进程知道子进程的退出, 所以UNⅨ提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息, 就可以得到。这种机制就是: 在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process等)。直到父进程通过wait / waitpid来取时才释放.
但这样就导致了问题,如果进程不调用wait / waitpid的话,那么保留的那段信息就不会释放,其进程号就会一直被占用,就变成僵尸了
(2)僵尸有毒
(2.1)系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程.
(2.2) 你用root的kill -9 也删不了。
(2.3)内存可能泄露
(3)暴力解决
杀死父进程,把它变成孤儿进程,让init 1号进程来领养。
(4)避免方法
(4.1) 让父进程wait/waitpid,
(4.2) 让父进程使用signal函数,为SIGCLILD的写handler,在handler里wait
(4.3) 如果不关心子进程的结果,父进程使用signal函数对SIGCLILD信号的处理为SIG_IGN忽略。
(4.4)化暴力为技巧:fork两次,父进程fork一个子进程,然后继续工作,子进程fork一 个孙进程后退出,那么孙进程被init接管,孙进程结束后,init会回收。
相关文章推荐
- 僵尸进程学习 & 进程状态列表 & Linux信号学习
- 为什么内核设计人员要给进程创造一种僵尸状态?
- 进程状态解析-如何杀死僵尸进程
- Wait4 & Ptrace & 进程调试 & 子进程状态获取 笔记总结
- Linux下fork()&vfork()的区别、getenv()&setenv()函数以及僵尸进程、孤儿进程讲解
- fork() & 僵尸进程
- Linux进程理解与实践(二)僵尸&孤儿进程 和文件共享
- linux僵尸进程&&进程进入不可中断休眠状态
- 进程 描述 状态
- 进程fork()两次---解决一个进程不必等待子进程终止,也不希望子进程处于僵死状态(一般是服务器进程fork())
- 孤儿进程&僵尸进程&守护进程【详细实例总结】
- 进程的状态以及僵尸进程和孤儿进程
- 线程分离状态与僵尸进程
- Linux的进程,线程以及调度(fork与僵尸,内存泄漏,task结构体,停止状态与作业控制)
- linux中的。"僵尸"进程
- 僵尸进程 & 孤儿进程 & UNIX异常控制流相关函数
- 回射客户端服务器中僵尸进程的处理( the solution of zombie process in the echo client && server )
- ps 命令查看进程状态(如运行,停止,僵死等)
- 僵死进程和僵尸进程
- 观察程序的状态,僵尸进程