首页 文章

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

提问于
浏览
0

嗨我在Windows中编写python脚本并使用子进程

我有一条线

results = subprocess.Popen(['xyz.exe'],stdout = subprocess.PIPE)

脚本结束后,我回到cmd中的提示胡萝卜,我看到打印出的脚本有更多输出 . 我看到的东西就像

找不到xxx_echo.txt

被反复打印出来 .

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

3 回答

  • 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
    
  • 0

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

  • 0

    你必须调用 terminate() 方法:

    results.terminate()
    

    卡住的子流程也有 kill() .

相关问题