您好我在Windows中编写python脚本并使用子进程
我有一行像
结果= subprocess.Popen([' xyz.exe&#39],标准输出= subprocess.PIPE)
脚本结束后,我回到cmd中的提示胡萝卜,我看到打印出的脚本有更多输出。 我看到像
这样的东西无法找到xxx_echo.txt
反复打印出来。
如何在Windows中正确关闭子流程?
答案 0 :(得分:3)
Could Not Find xxx_echo.txt
看起来像一条错误消息,可能会打印在stderr上。您对Popen()
的呼叫不会收集孩子的stderr输出,因此它将打印在您的终端中。
如果您的脚本没有等待孩子完成,则在您的脚本退出后,孩子可能仍在执行。您应该调用wait()
等待孩子完成执行。如果您不想等,请致电terminate()
以终止子流程。
如果你不希望它被转发到终端,你也应该收集stderr。
child = subprocess.Popen(['xyz.exe'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
child.wait()
print child.returncode
答案 1 :(得分:0)
您需要在退出主脚本之前调用results.kill()或results.terminate()(它们是Windows上的别名)来结束子进程。
答案 2 :(得分:0)
您必须调用terminate()
方法:
results.terminate()
卡住的子流程也有kill()
。