Python脚本子进程在脚本结束后继续输出

您好我正在写一个Python脚本在Windows和使用子进程

我有一条线

结果= subprocess.Popen([ 'xyz.exe'],标准输出= subprocess.PIPE)

脚本结束后,我回到cmd中的promp胡萝卜,我看到脚本的更多输出被打印出来。 我看到类似的东西

找不到xxx_echo.txt

重复打印出来。

我如何正确关闭Windows中的子进程?


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

您需要在退出主脚本之前调用results.kill()或results.terminate()(它们是Windows上的别名)以结束子进程。


你必须调用terminate()方法:

results.terminate()

还有kill()卡住的子进程。

链接地址: http://www.djcxy.com/p/77113.html

上一篇: Python windows script subprocess continues to output after script ends

下一篇: Subprocess error in python