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() 开发者_C百科#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
proc1.kill()
Both kill or terminate are methods of the Popen object. On macOS and Linux, kill sends the signal signal.SIGKILL to the process and terminate sends signal.SIGTERM. On Windows they both call Windows' TerminateProcess() function.
process.terminate() doesn't work when using shell=True. This answer will help you.
Only use 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
加载中,请稍侯......
精彩评论