Python windows脚本子进程在脚本结束后继续输出
Posted
技术标签:
【中文标题】Python windows脚本子进程在脚本结束后继续输出【英文标题】:Python windows script subprocess continues to output after script ends 【发布时间】:2014-12-17 11:22:26 【问题描述】:您好,我正在 Windows 中编写 Python 脚本并使用子进程
我有一条线
results=subprocess.Popen(['xyz.exe'],stdout=subprocess.PIPE)
脚本结束后,我回到 cmd 中的提示胡萝卜,我看到脚本的更多输出被打印出来。 我看到了类似的东西
找不到 xxx_echo.txt
被反复打印。
如何正确关闭windows中的子进程?
【问题讨论】:
你是如何关闭子进程的? @cwallenpoole 哈哈。我不是... 【参考方案1】: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
【讨论】:
谢谢!这解决了我的问题。【参考方案2】:在退出主脚本之前,您需要调用 results.kill() 或 results.terminate()(它们是 Windows 上的别名)来结束子进程。
【讨论】:
【参考方案3】:你必须调用terminate()
方法:
results.terminate()
还有kill()
用于卡住的子进程。
【讨论】:
以上是关于Python windows脚本子进程在脚本结束后继续输出的主要内容,如果未能解决你的问题,请参考以下文章