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()
卡住的子进程。
上一篇: Python windows script subprocess continues to output after script ends