金刚骷髅岛下载,美国奥运男篮,哈桑99萨巴赫
目录
代码示例支持 |
---|
平台: centos 6.3 |
python: 2.7.14 |
github: https://github.com/baidu/cup |
pid, ppid是大家比较常见的术语, 代表进程号,父进程号. 但pgid是个什么鬼?
了解pgid之前, 我们先复习下:
os.system
或者popen
家族启动子进程这个场景还有个后续就是:
这个就是今天我们遇到的坑, 怎么处理孙子进程. 大家注意, 不仅是python会遇到这个问题, 其他语言包括 shell 都一样会遇到这种"孙子"进程怎么进程异常处理的问题.
本期的坑位解法其实有两种, 第一种比较暴力, 简称穷尽搜索孙子法.
a. 穷尽搜索孙子法, 代码示例
关键点:
from cup.res import linux pstatus = linux.process(pid) for child in pstatus.children(recursive=true): os.kill(child, signal.sigkill)
b. 获得该进程的 pgid, 进行 kill 操作
b1. 先讲个 shell 操作的做法, 使用ps 获取进程的pgid, 注意不是pid
# 以mysqld为例, 注意 pgid 项 ps -e -o uid,pid,gid,pgid,cmd|grep mysql
结果:
注意其中第三列, 该进程和子进程都使用了同样的pgid 9779
9790 0 9779 /bin/sh /usr/bin/mysqld_safe --datadir=/home/maguannan/mysql/mysql/....
10171 501 9779 /home/maguannan/bin/mysqld --basedir=/home/maguannan/mysql/....
通过kill -9 -9779
的方式可以杀死该pgid底下的所有子孙进程
b2. 在讲 python 里的处理方式
import os import signal from cup.res import linux pstatus = linux.process(pid) os.killpg(pstatus.getpgid(), signal.sigkill)
进程组特性
a. 在*unix 编程中, 进程组(man getpgid
)概念是个很重要但容易被忽略的内容
b. 进程组内的所有成员会收到来自相同的信号
引用 wikipedia 原文:
a process group is used to control the distribution of a signal; when a signal is directed to a process group, the signal is delivered to each process that is a member of the group.
坑位解决
life is short. we use python.
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论