僵死状态&&僵尸进程
来源:互联网 发布:王维 李白 知乎 编辑:程序博客网 时间:2024/05/19 02:06
首先表明一下:僵死状态是每个子进程的正常状态,但僵死进程是一种有毒有危害的进程。
孤儿进程:父进程退出,子进程仍在运行,最后会被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-进程状态&僵尸进程&孤儿进程
- 僵死进程
- 僵死进程
- 僵死进程
- 僵死进程
- 僵死进程
- 僵死进程
- 僵死进程
- 僵死进程
- 僵死进程
- 僵死进程
- 僵死进程
- 僵死进程
- 僵死进程
- 进程状态解析-如何杀死僵尸进程
- 线程分离状态与僵尸进程
- 线程分离状态与僵尸进程
- GROUP_CONCAT
- 冒昧发一封朋友的来信,值得一看
- 谋杀1990
- HDFS block丢失过多进入安全模式(safe mode)的解决方法
- NAT的完全分析及其UDP穿透的完全解决方案
- 僵死状态&&僵尸进程
- 最详细的tcpdump介绍
- 用Graphviz来画图
- C#基础
- [USACO3.4.2]Electric Fence
- 转:谨以此文献给才毕业2--5年的朋友
- (转)精通C++的定义
- 【转贴】张飞的日记
- 美国社会的自信(zt)