如何关闭用Popen打开的子进程?

时间:2018-12-01 21:29:35

标签: python-3.x

我有下面的python 3.6代码,可以成功打开ping命令并执行而不会出现问题。我注意到任务管理器中似乎有一个“ ping”过程持续存在。

代码:

ping = subprocess.Popen("ping -n {} -w {} {}".format(5, 3, ip), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE).communicate()[0]

问题:

我是否必须显式“关闭”该子流程?如果是这样,是否可以通过“ with”块来执行此操作,以使其在退回/完成后自动关闭? ...或者,Popen是否不需要显式关闭子进程?

谢谢。

1 个答案:

答案 0 :(得分:0)

Popen.terminte()是您要寻找的。来自文档:

  

停止孩子。在Posix OS上,该方法将SIGTERM发送给子级。在Windows上,调用Win32 API函数TerminateProcess()来停止子级。