os.wait() losing child?
Jason Zheng
Xin.Zheng at jpl.nasa.gov
Tue Jul 10 21:05:52 EDT 2007
Hate to reply to my own thread, but this is the working program that can
demonstrate what I posted earlier:
import os
from subprocess import Popen
pids = {}
counts = [0,0,0]
for i in xrange(3):
p = Popen('sleep 1', shell=True, cwd='/home',
stdout=file(os.devnull,'w'))
pids[p.pid] = i
print "Starting child process %d (%d)" % (i,p.pid)
while (True):
(pid,exitstat) = os.wait()
i = pids[pid]
del pids[pid]
counts[i]=counts[i]+1
#terminate if count>10
if (counts[i]==10):
print "Child Process %d terminated." % i
if reduce(lambda x,y: x and (y>=10), counts):
break
continue
print "Child Process %d terminated, restarting" % i
p = Popen('sleep 1', shell=True, cwd='/home',
stdout=file(os.devnull,'w'))
pids[p.pid] = i
More information about the Python-list
mailing list