以下是我的想法:
首先,我使用subprocess.Popen
创建了一个进程其次,经过一段时间后,我试图通过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)
然而,在Popen.kill()之后,“proc1”仍然存在。 任何专家都可以告诉我如何解决这个问题吗? 感谢您的考虑。
感谢所有专家的评论,我做了你所做的一切,但结果仍然保持不变。
proc1.kill() #it sill cannot kill the proc1
os.kill(proc1.pid, signal.SIGKILL) # either cannot kill the proc1
谢谢你们。
我仍然在等待你在解决这个微妙问题上的宝贵经验。
答案 0 :(得分:26)
在你的代码中它应该是
proc1.kill()
kill
或terminate
都是Popen
对象的方法,它将信号signal.SIGKILL
发送给流程。
答案 1 :(得分:13)
process.terminate()在使用shell=True
时无效。这个answer会对您有所帮助。
答案 2 :(得分:8)
仅使用Popen
kill方法
process = subprocess.Popen(
task.getExecutable(),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True
)
process.kill()
答案 3 :(得分:0)
使用os.kill怎么样?请参阅此处的文档:http://docs.python.org/library/os.html#os.kill