关于僵死进程

xhy_851221 2008-11-15 08:59:34
当子进程终止时,父进程对其进行善后处理(获取子进程信息,释放它所占用的资源),那么父进程是在什么时候作善后处理的??是在父进程退出时么?
获取子进程信息,释放它所占用的资源这两个过程是不是同时进行?
期待回答
...全文
175 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
appleswanglei 2008-12-08
  • 打赏
  • 举报
回复
回复9楼:
这样写就可以处理同时结束的子进程:
while( (pid = waitpid(-1,&stat,WNOHANG)) > 0)
{
printf("child %d exit\n",pid);
sleep(5);
}

具体的解释详见:http://bbs.chinaunix.net/archiver/?tid-828942.html

希望对你有用。
xhy_851221 2008-11-17
  • 打赏
  • 举报
回复
顶9楼
xhy_851221 2008-11-17
  • 打赏
  • 举报
回复
顶9楼
benbenxiaoluchi 2008-11-17
  • 打赏
  • 举报
回复
自己写函数捕捉SIGCHLD信号,在函数中wait或waitpid,
如果多个子进程同时结束,同时发出信号会造成信号阻塞吗, 如果会怎么处理。
once_and_again 2008-11-17
  • 打赏
  • 举报
回复
atexit()
waitpid()
wait()
快乐田伯光 2008-11-16
  • 打赏
  • 举报
回复
不是吧,如果显示忽略了SIGCHLD信号,是不需要处理子进程的退出状态的.
wlabing 2008-11-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 genghb 的回复:]
子进程退出时,会给父进程发送SIGCHLD信号,

父进程可以使用signal设置捕捉该信号
然后使用wait 或waitpid 得到子进程退出状态
[/Quote]

同上
Linux平台对SIGCHLD信号的默认处理是"忽略",若父进程忽略SIGCHLD信号,子进程退出后留下的一些资源(比如退出状态等信息)仍然保留在内存中,子进程就成为僵死进程。
genghb 2008-11-16
  • 打赏
  • 举报
回复
昨晚 网络出问题 发了n次。。
cjx_epop 2008-11-16
  • 打赏
  • 举报
回复
立即释放子进程占用的资源,子进程都退出了,不释放资源干什么?
xhy_851221 2008-11-16
  • 打赏
  • 举报
回复
父进程捕捉到信号得到子进程的推出状态后,就立即释放子进程占用的资源么?还是等到父进程终结时才释放??
genghb 2008-11-15
  • 打赏
  • 举报
回复
子进程退出时,会给父进程发送SIGCHLD信号,

父进程可以使用signal设置捕捉该信号
然后使用wait 或waitpid 得到子进程退出状态
genghb 2008-11-15
  • 打赏
  • 举报
回复
使用wait 或waitpid

或者处理SIGCHLD 信号(如果不想处理,直接设置为忽略即可)

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧