社区
C语言
帖子详情
UNIX程序中如何杀掉由子进程产生的defunct?
binb
2000-07-13 05:22:00
加精
kill(pid,SIGKILL)好象不行?
...全文
129
1
打赏
收藏
UNIX程序中如何杀掉由子进程产生的defunct?
kill(pid,SIGKILL)好象不行?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
genesis
2000-07-14
打赏
举报
回复
bind 你好,我觉得你的三个问题基本相同,所以一起回答吧。
你所遇到的问题主要是子进程终止,而父进程没有进行处理,产生了僵尸进程(Zombie),
即<defunct>。需要函数signal(SIGCHLD,xxx)来扑捉。结构如下:
#include <signal.h>
....
signal(SIGCHLD,sigchld);
while (1) {
if (p_id=fork())==0) {
....
exit(0);
}
else {
...
}
...
kill(p_id, SIGKILL);//这句还要不要,自己看吧
continue;
}
void sigchld(int signo)
{
int status;
while (waitpid(-1,&status,WNOHANG)>0);
return;
}
参数WNOHANG主要是防止阻塞其他运行的子进程。
W.RICHARD STEVENS大师的书都很不错,有空多看看,只可惜大师人已不在了。
少赚不少分啊。
【linux】僵尸进程(
Def
unc
t进程)的
产生
与避免
在
UNIX
系统
中
,一个进程结束了,但是他的父进程没有等待...因为每个进程结束的时候,系统都会扫描当前系统
中
所运行的所有进程,看看有没有哪个进程是刚刚结束的这个进程的
子进程
,如果是的话,就由Init进程来接管他
如何kill
杀掉
linux系统
中
的僵尸
def
unc
t进程
在
Unix
系统管理
中
,当用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为
def
unc
t,这就是所谓的“僵尸”进程。“僵尸”进程是一个早已 死亡的进程,但在进程表(processs table)
中
仍占了一个位置(slot)...
如何
杀掉
def
unc
t进程
在
Unix
系统管理
中
,当用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为
def
unc
t,这就是所谓的“僵尸”进程。“僵尸”进程是一个早已死亡的进程,但在进程表(processstable)
中
仍占了一个位置(slot)。...
java
def
unc
t怎么
杀掉
_僵尸进程的
产生
和避免,如何kill
杀掉
linux系统
中
的僵尸
def
unc
t进程...
在
Unix
系统管理
中
,当用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为
def
unc
t,这就是所谓的“僵尸”进程。“僵尸”进程是一个早已 死亡的进程,但在进程表(processs table)
中
仍占了一个位置(slot)。...
linux 僵尸进程
def
unc
t
在
Unix
系统管理
中
,当用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为
def
unc
t,这就是所谓的“僵尸”进程。 “僵尸”进程是一个早已 死亡的进程,但在进程表(processs table)
中
仍占了一个位置(slot...
C语言
69,336
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章