如何在Python中使用subprocess.call命令杀死一个子进程?

7

我正在使用以下命令调用:

subprocess.call(cmd, shell=True)

该命令不会自动终止。如何结束它?
2个回答

6

subprocess.call会等待命令完成,所以你无法通过编程方式终止它。你唯一的选择是使用操作系统特定的命令(如kill)手动终止它。

如果你想通过编程方式终止一个进程,你需要使用subprocess.Popen启动进程,然后使用terminate方法终止它。以下是一个示例:

import time, subprocess

t1 = time.time()

p = subprocess.Popen('sleep 1', shell=True)
p.terminate()
p.wait()
t2 = time.time()

print(t2 - t1)

这个脚本执行需要大约.002秒的时间(如果sleep命令没有被终止,需要大约1秒)。


4

我认为你需要的是subprocess.terminate()。如果你使用Popen而不是call,它将是非阻塞的,你将能够恢复执行。当然,如果你立即调用terminate,它将在执行任何操作之前终止。 文档在这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接