Alan Gauld schrieb: > Thanks, I may use that as one of the example programs if > you don't mind?
I took the liberty of refactoring Johan's example a bit, to make it more reusable. See attached file. Chris
"""Wrapper object for external commands, that allows to kill them after later.. ::Author: Johan Geldenhuys [EMAIL PROTECTED] ::Version: 0.0.2 ::Date last updated: 2005-11-16 ::Changes: - refactored by Christopher Arndt :: TODO: Capture the output from line 41 to a file. """ import os, signal, time class KillableCommand(object): def __init__(self, command, *args): self.pid = None self.command = command self.args = args def kill(self, signal=signal.SIGTERM): try: os.kill(self.pid, signal) except: raise OSError, "Could not kill process." def run(self, *args): self.pid = os.fork() args = list(self.args + args) if self.pid == 0: os.execvp(self.command, [self.command] + args) if __name__ == '__main__': cmdname = "ping" print "Starting", cmdname #cmd = KillableCommand('tcpdump', '-npi') cmd = KillableCommand(cmdname, '-c', '10') cmd.run('www.python.org') print "PID: ", cmd.pid print "Letting it run for 5 seconds..." time.sleep(5) try: print "Trying to kill pid %d..." % cmd.pid cmd.kill() except OSError, e: print e else: print "Killed pid %d." % cmd.pid
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor