I want to be able to start a process and then be able to kill it afterwards
+7
A:
Have a look at the subprocess
module.
You can also use low-level primitives like fork()
via the os
module.
Bastien Léonard
2009-09-04 12:40:44
+3
A:
A simple function that uses subprocess module:
def CMD(cmd) :
p = subprocess.Popen(cmd, shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
close_fds=False)
return (p.stdin, p.stdout, p.stderr)
Béres Botond
2009-09-04 13:07:31
A:
see docs for primitive fork() and modules subprocess, multiprocessing, multithreading
DrFalk3n
2009-09-04 16:33:13
+2
A:
Here's a little python script that starts a process, checks if it is running, waits a while, kills it, waits for it to terminate, then checks again. It uses the 'kill' command. Version 2.6 of python subprocess has a kill function. This was written on 2.5.
import subprocess
import time
proc = subprocess.Popen(["sleep", "60"], shell=False)
print 'poll =', proc.poll(), '("None" means process not terminated yet)'
time.sleep(3)
subprocess.call(["kill", "-9", "%d" % proc.pid])
proc.wait()
print 'poll =', proc.poll()
The timed output shows that it was terminated after about 3 seconds, and not 60 as the call to sleep suggests.
$ time python prockill.py
poll = None ("None" means process not terminated yet)
poll = -9
real 0m3.082s
user 0m0.055s
sys 0m0.029s
FeatureCreep
2009-09-06 15:43:41