Here is my thought:
First of all, I created a process by using subprocess.Popen
Second, after certain amount of time, I tried to kill it by Popen.kill()
import subprocess import os, signal import time proc1 = subprocess.Popen("kvm -hda /path/xp.img", shell = True) time.sleep(2.0) print 'proc1 = ', proc1.pid subprocess.Popen.kill(proc1)
However, “proc1” still exists after Popen.kill().
Could any experts tell me how to solve this issue?
I appreciate your considerations.
Thanks to the comments from all experts, I did all you recommended, but result still remains the same.
proc1.kill() #it sill cannot kill the proc1
os.kill(proc1.pid, signal.SIGKILL) # either cannot kill the proc1
Thank you all the same.
And I am still waiting for your precious experience on solving this delicate issue.
In your code it should be
terminate are methods of the
Popen object which sends the signal
signal.SIGKILL to the process.
process.terminate() doesn’t work when using
shell=True. This answer will help you.
Popen kill method
process = subprocess.Popen( task.getExecutable(), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) process.kill()
How about using os.kill? See the docs here: http://docs.python.org/library/os.html#os.kill