当我运行以下代码时:
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
我运行此操作以确保该过程不超过时间限制。显然,这就是为什么我无法杀死这个过程。
答案 0 :(得分:2)
因为你使用shell=True
,所以你最终杀死的是shell(cmd.exe进程)本身。
进程组是Windows的一个相对较新的功能,我不知道除了实际使用它们的任务计划程序之外的任何软件。
答案 1 :(得分:0)
您正在运行的命令可能是设置sigmask以忽略kill信号。你能尝试另一个命令吗?例如,制作一个无限时间睡眠的脚本并尝试杀死
offtopic,我认为shell arg在Windows上没有任何意义