Python: 调用 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
你运行的命令可能在设置一个信号屏蔽,导致它忽略了杀死信号。你可以试试其他命令吗?比如,写一个脚本让它在一个无限循环中睡眠,然后试着杀掉这个脚本。
另外,题外话,我觉得在Windows上,shell参数没有什么意义。
2
因为你使用了 shell=True
,所以你最终杀掉的只是命令行程序(cmd.exe 进程)本身。
进程组是Windows比较新的一个功能,我不知道除了任务调度器之外,还有哪个软件真正使用了这个功能。