免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1671 | 回复: 3
打印 上一主题 下一主题

如何回收zombie状态的进程空间? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-12 21:32 |只看该作者 |倒序浏览
通常zombie状态进程的父进程是1号进程,现在遇到的问题是如何释放处于僵死状态的进程所占用的内存空间?

论坛徽章:
0
2 [报告]
发表于 2006-06-12 23:44 |只看该作者
原帖由 strongzgy 于 2006-6-12 21:32 发表
通常zombie状态进程的父进程是1号进程,现在遇到的问题是如何释放处于僵死状态的进程所占用的内存空间?



跟这相对的是孤儿进程,那才是1号进程或是旁父进程。
zombie只是一个进程的最后状态。等待父进程来处理。

论坛徽章:
0
3 [报告]
发表于 2006-06-14 00:13 |只看该作者

回复 1楼 strongzgy 的帖子

在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之
   前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽
   略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9
   也不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然
   存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵
   尸进程。
   
   现在问题是,我来不及等待1号进程来清理僵死进程,我想手动释放它占用的任务数据结构,该怎么做?也就是ps aux时再也见不到这个进程.

论坛徽章:
0
4 [报告]
发表于 2006-06-15 16:42 |只看该作者
原帖由 strongzgy 于 2006-6-14 00:13 发表
在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之
   前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽
   略该信号,则子进程成为僵尸进程,无法正常结束 ...



明白你的意思,
但是,这个僵死进程不被父进程也不被init进程收尸,
那它耗费的系统资源(如CPU霎时间)将算在谁的头上?

一般的方法是如何被免产生过多的僵尸进程,而不是让它“自动”的消失,
不知道有没有这种方法,关注----
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP