This question already has an answer here:
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
Both
kill
orterminate
are methods of thePopen
object which sends the signalsignal.SIGKILL
to the process.process.terminate() doesn't work when using
shell=True
. This answer will help you.Only use Popen kill method
How about using os.kill? See the docs here: http://docs.python.org/library/os.html#os.kill