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