Python:调用process.terminate()不会杀死它

时间:2011-03-31 18:48:58

标签: python windows process terminate

当我运行以下代码时:

p = subprocess.Popen("...", shell=True)          
if p.poll() == None:
  p.kill()

这个过程根本没有被杀死。我在Windows上。

我认为这是因为多线程,我在一个线程中运行它,仍然是同样的事情。

你有什么想法可以解决这个问题吗?

谢谢

更新

我找到了导致问题的代码:

while cur_time < self.time_limit:
            if p.poll() != None:
                too_much_time = False
                break
            time.sleep(0.1)
            cur_time += 0.1

我运行此操作以确保该过程不超过时间限制。显然,这就是为什么我无法杀死这个过程。

2 个答案:

答案 0 :(得分:2)

因为你使用shell=True,所以你最终杀死的是shell(cmd.exe进程)本身。

进程组是Windows的一个相对较新的功能,我不知道除了实际使用它们的任务计划程序之外的任何软件。

答案 1 :(得分:0)

您正在运行的命令可能是设置sigmask以忽略kill信号。你能尝试另一个命令吗?例如,制作一个无限时间睡眠的脚本并尝试杀死

offtopic,我认为shell arg在Windows上没有任何意义