from signal import SIGTERM
from sys import exit
from time import sleep
from os import *
def slow():
fork()
sleep(10)
def fast():
sleep(1)
child_pids = []
#for child_func in [fast, slow, slow, fast]:
for child_func in [fast, fast]:
pid = fork()
if pid == 0:
setsid()
child_func()
exit(0)
else:
print "spawned pgrp %d" % pid
child_pids.append(pid)
(pid, status) = waitpid(-1, 0)
print "Reaped pid: %d, status: %d" % (pid, status)
for child_pid in child_pids:
try:
print popen('ps -e -o pid,ppid,pgid,state,command | grep -i python').read()
print "killing pg %d" % child_pid
killpg(child_pid, SIGTERM)
except OSError, e:
print "Error killing %s: %s" %(child_pid, e)