博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

自己学习的记录

不要说你不会,只是你还没有努力罢了!
  ZhangQuan.cublog.cn

关于作者
姓名:张佺
性别:男
职业:暂时失业,做自己的东西
年龄: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条 推荐 投诉


网友评论
 发表评论