Alan,
You may remember that I asked questions on killing a process, a while back,
Sice this is relatedto the tutorial that yu are writing, this was the
best solution that worked for me to killa process for a command that
keeps on running like eg. 'tcpdump'.
HTH
Johan
BTW, There will a be many a felllow Pythonists that will benefit from a
tut like this, great work !!
Alan Gauld wrote:
I've just added an incomplete draft copy of my latest tutorial topic
on using the Operating System from Python. The material that's
there discusses the role of the OS and looks at file handling
usng os/os.path/shutil etc.
http://www.freenetpages.co.uk/hp/alan.gauld/tutos.htm
If anyone would like to take a look and provide feedback on
general direction/depth etc that'd be greatly appreciated.
TIA,
Alan G
Author of the learn to program web tutor
http://www.freenetpages.co.uk/hp/alan.gauld
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
"""
This class will execute the command, let it run for 5 seconds and kill the process.
::Author: Johan Geldenhuys
[EMAIL PROTECTED]
::Version: 0.0.1
::Date last updated: 2005-11-03
::Changes:
:: TODO: Capture the output from line 41 to a file.
"""
import os, signal, time
class command(object):
def __init__(self):
pass
def kill(self, pid, signal=signal.SIGTERM):
try:
print "trying to kill pid...", pid
os.kill(pid, signal)
#os.waitpid(pid, 0)
print "Killed %d"%pid
except:
print "couldn't stop process"
def main(self, interface):
self.interface = interface
self.pid = os.fork()
if self.pid == 0:
os.execvp('tcpdump', ['tcpdump', '-npi', self.interface])
print 'PID: ',self.pid
print 'Let it run for 5 seconds...'
time.sleep(5)
self.kill(self.pid)
if __name__ == '__main__':
print "starting test"
c = command()
c.main('eth0')
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor