博客首页
注册
建议与交流
排行榜
加入友情链接
推荐
投诉
搜索:
帮助
自己学习的记录
不要说你不会,只是你还没有努力罢了!
ZhangQuan.cublog.cn
管理博客
发表文章
留言
收藏夹
· 开源社区
· 音乐
· 下载
· 其他
博客圈
音乐
相册
文章
· 心情、随笔
· C/C++/SHELL等
· Linux系统管理/网络技术
· 系统安全/漏洞利用
· My Project
}
· LanTalk
· 通用Makefile
首页
关于作者
姓名:张佺 性别:男 职业:暂时失业,做自己的东西 年龄:24 位置:北京 个性介绍:天塌下来也会笑 Email:net_robber@tom.com
||
<<
>>
||
我的分类
杀死全部子进程的两个方法
上周末,有人在CU的BBS提问如何杀掉一个进程的全部子进程。
这个问题,我最终帮他解决了。
这里记录一下。
解决问题的方法,我想到两种:一种是通过SHELL完成,另外一种是通过进程组管理完成
如果通过SHELL,
ps awx -o "%p %P"|grep -w PID| awk '{ print $1 }'|xargs kill -9
可以完成这个工作。其中PID为父进程的PID
如果通过进程组管理
需要用到函数
setpgid(0,0);
这个函数可以设置进程组GID,而且要在产生子进程前进行设置。
这样,它的所有子进程都会具备这个GID,并在 信号
kill(0 , SIGKILL ); 到达时,作为通一个GID的进程被一同杀掉。
相关参考:
man 2 kill
man 7 signal
man setpgid
以及其他相关
这里上传两种方法的源代码
文件:
killchild.tar.gz
大小:
1KB
下载:
下载
发表于: 2007-03-12,修改于: 2007-04-03 12:42,已浏览561次,有评论0条
推荐
投诉
网友评论
发表评论