【问题标题】:Python subprocess produced output or notPython子进程是否产生输出
【发布时间】:2010-11-15 22:37:11
【问题描述】:

这个问题与:

python, subprocess: reading output from subprocess

如果 P 是一个子进程,它以类似的命令启动

import subprocess

P = subprocess.Popen ("command", stdout=subprocess.PIPE)

我们可以读取 P.stdout.readline() 产生的输出 P。这是一个阻塞读取。如何检查是否有输出可供读取(无阻塞)?

【问题讨论】:

标签: python communication subprocess


【解决方案1】:

如果你使用*nix,那么你可以使用select模块来轮询stdout文件描述符

import subprocess
import select
poller = select.epoll()

P = subprocess.Popen ("command", stdout=subprocess.PIPE)
poller.register(P.stdout, select.EPOLLHUP)

while True:
    #block indefinitely: timeout = -1
    #return immediately: timeout = 0
    for fd, flags in poller.poll(timeout=0)
        foo = P.stdout.readline()
    #do something else before the next poll

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多