I am writing a script that monitors a child process. If the child process dies on its own, then the parent continues on. If the child process is still alive after a timeout period, the parent will kill the child process. Enclosed is a snippet of the code I have written. For some reason, unless I put in two time.sleep(4) commands in the parent, the process will not sleep. Am I forgetting something? Any reasons for this strange behavior?
Linux Fedora Core 4 Python 2.4.1 Thanks. #!/usr/bin/env python import os, time import signal import sys def chldhandler(signum, stackframe): while 1: try: result = os.waitpid(-1, os.WNOHANG) except: break print "Reaped child process %s" % result[0] signal.signal(signal.SIGCHLD, chldhandler) signal.signal(signal.SIGCHLD, chldhandler) pid = os.fork() if pid: # parent print "Parent. Child is %d" % pid try: os.kill(pid, 0) print "Killed child" os.kill(pid, signal.SIGKILL) except OSError, err: print "Child is dead" print "In parent again" time.sleep(4) time.sleep(4) print "Parent awake" else: # child print "Child sleeping 5 seconds..." time.sleep(5) print "Child awake" -- http://mail.python.org/mailman/listinfo/python-list