首页 > 解决方案 > 如何正确结束python中的子进程?

问题描述

有人可以澄清结束以 Popen 开始的子流程的最正确方法是什么吗?

考虑例如

proc = subprocess.Popen(["tail", "-f", filename], stdout=subprocess.PIPE)

我发现了很多选择:

proc.stdout.close()
proc.kill()
proc.terminate()
os.kill(proc, signal.SIGKILL)
os.kill(proc, signal.SIGINT)

标签: pythonsubprocess

解决方案


根据文档Popen 支持with声明。所以我的猜测是使用它,所以它是自动制作的。如果您愿意,我想您可以查看代码内部以查看已完成的操作。

with subprocess.Popen(["tail", "-f", filename], stdout=subprocess.PIPE) as proc:
    # do stuff
# everything should be closed now

推荐阅读