【问题标题】:Get STDOUT, STDERR of all running processes in Python获取Python中所有正在运行的进程的STDOUT、STDERR
【发布时间】:2014-09-15 19:24:05
【问题描述】:

我是 Python 菜鸟。

有没有办法在 Python 中获取所有正在运行的进程的 STDOUT 和 STDERR?一些进程在很长一段时间后退出,并且它们的状态不断被写入STDOUT。

【问题讨论】:

  • 您是指字面上所有正在运行的进程,还是只是您在运行程序时创建的进程?你创建多个进程吗?两个主要策略是为每个进程创建一个线程,以便它们并行运行,或者创建文件并在那里重定向进程输出。
  • 也许这个答案可以帮助你stackoverflow.com/a/18345099/841339
  • 这是两个非常不同的问题。

标签: python subprocess stdout


【解决方案1】:

逐行获取子进程输出而不等待它关闭:

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
while True:
    o = p.stdout.readline()
    if not o:
        break
    print o

如果想从进程中读取每个“n”个字符,可以使用 p.stdout.read(n)。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    相关资源
    最近更新 更多