I want to be able to start a process and then be able to kill it afterwards
Asked
Active
Viewed 1.6k times
6 Answers
14
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
- 1,784
- 1
- 19
- 23
-
2you can use `os.kill(..)` to kill the process – Andre Holzner Mar 11 '15 at 16:00
-
2or even `proc.terminate()` or `proc.kill()` since python 2.6 – Andre Holzner Mar 11 '15 at 16:27
8
Have a look at the subprocess
module.
You can also use low-level primitives like fork()
via the os
module.

Bastien Léonard
- 60,478
- 20
- 78
- 95
3
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)

Botond Béres
- 16,057
- 2
- 37
- 50
0
see docs for primitive fork() and modules subprocess, multiprocessing, multithreading

DrFalk3n
- 4,926
- 6
- 31
- 34