设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
有关僵死进程:help
返回列表
查看:
1093
|
回复:
7
有关僵死进程:help
[复制链接]
tsingien
tsingien
当前离线
积分
4
IP卡
狗仔卡
发表于 2004-4-2 09:17:35
|
显示全部楼层
|
阅读模式
我fork了一个进程,然后在这里面使用execv来执行一个java程序.在执行的过程中我给这个子进程发送SIGKILL信号.但是唯一的结局是把这个进程搞成了僵死进程.没有杀掉.请问为什么?怎么才能杀掉这个子进程? :confused:
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
theseus
theseus
当前离线
积分
345
IP卡
狗仔卡
发表于 2004-4-2 09:47:38
|
显示全部楼层
这个子进程已经被kill掉了。你要避免僵死进程,需要在父进程里面处理SIGCHLD信号
回复
支持
反对
使用道具
举报
显身卡
tsingien
tsingien
当前离线
积分
4
IP卡
狗仔卡
楼主
|
发表于 2004-4-2 10:47:56
|
显示全部楼层
谢谢.theseus
在父进程中处理SIGCHLD信号?怎么做才能杀死那个僵死的进程呢
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2004-4-2 11:09:48
|
显示全部楼层
在父进程收到SIGCHLD信号后再退出。
回复
支持
反对
使用道具
举报
显身卡
talas
talas
当前离线
积分
2
IP卡
狗仔卡
发表于 2004-4-4 19:37:29
|
显示全部楼层
在父进程里截取或忽略SIGCHID 。
用 wait(); 就挂起等待。
或用 signal(SIGCHID,fun) 来处理此信号;fun 为信号处理函数
回复
支持
反对
使用道具
举报
显身卡
小劲鸭
小劲鸭
当前离线
积分
2361
IP卡
狗仔卡
发表于 2004-4-5 02:59:17
|
显示全部楼层
zombie state 很多时候是发生在一个parent和多个children in parallel的情况下的(以前自己作个minishell的时候会有这种状况)。。一个parent和一个child的情况下用if(fork() == 0){...exit();} else{....exit()}的结构是会自动结束child, 之后在结束parent, 而不会产生zombie的。。为什么要用sigkill来手动杀呢?
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2004-4-5 15:20:59
|
显示全部楼层
在父子进程不同步的情况下,只要父进程在子进程之前结束,子进程都有可能变成zombie。
回复
支持
反对
使用道具
举报
显身卡
dancingpig
dancingpig
当前离线
积分
1525
IP卡
狗仔卡
发表于 2004-4-6 13:32:37
|
显示全部楼层
unix高级环境编程有一节这么写的
大概好象是这个意思
在子进程结束后,很多系统资源没有被回收,要处理这些资源使之能被其他进程使用就要使用wait或者waitpid函数来处理掉这些僵尸进程。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
SuSE Linux
Archlinux讨论区
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表