【问题标题】:Python windows script subprocess continues to output after script endsPython windows脚本子进程在脚本结束后继续输出
【发布时间】:2014-12-17 11:22:26
【问题描述】:

您好,我正在 Windows 中编写 Python 脚本并使用子进程

我有一条线

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

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

找不到 xxx_echo.txt

被反复打印。

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

【问题讨论】:

  • 你是如何关闭子进程的?
  • @cwallenpoole 哈哈。我不是...

标签: python windows subprocess


【解决方案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() 用于卡住的子进程。

    【讨论】:

      猜你喜欢
      • 2015-06-10
      • 2013-12-08
      • 2020-10-13
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      相关资源
      最近更新 更多