def terminateChildren(self, child, signals=(signal.SIGINT, signal.SIGTERM)):
ls = commands.getoutput('ls /proc')
entries = ls.split('\n')
for entry in entries:
filename = '/proc/'+entry+'/status'
try:
fp = open(filename,'r')
stuff = fp.readlines()
except:
continue
for line in stuff:
if 'PPid' in line:
ret=line
break
if ret != '':
parentPid = int(ret.split('\t')[-1][:-1])
if parentPid == child.pid:
self.terminateChildrenPidOnly(entry, signals)
if child.poll() != None:
return
try:
for sig in signals:
os.kill(child.pid, sig)
if self.waitTermination(child):
break
child.wait()
except OSError:
pass
评论列表
文章目录