【发布时间】:2011-05-04 07:34:10
【问题描述】:
这是我的想法:
首先,我使用 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)
但是,“proc1”在 Popen.kill() 之后仍然存在。 有高手能告诉我如何解决这个问题吗? 感谢您的考虑。
感谢所有专家的cmets,我按照你的建议做了,但结果还是一样。
proc1.kill() #it sill cannot kill the proc1
os.kill(proc1.pid, signal.SIGKILL) # either cannot kill the proc1
谢谢大家。
我还在等待您解决这个棘手问题的宝贵经验。
【问题讨论】:
-
为什么需要“shell = True”?如果没有这个,它似乎完全按照您的预期工作。
-
请不要将[已解决]放在标题中,而是点击复选符号选择正确答案。
-
subprocess.Popen.kill(proc)与proc.kill()完全相同。仅供参考。 -
kill -9doesn't work 不太可能。您的问题可能是您需要kill the whole process tree。