无法从重定向的stdout读取

时间:2012-12-02 04:47:02

标签: python

我没有使用os.pipes()的经验,因此非常感谢您的帮助。

问题:我想将我的进程的stdout重定向到管道,并从另一端读取它。我的第一稿是这段代码。我似乎写到管道的写端,但后来我无法从读取端读取它,并且读取调用块...我猜有一些愚蠢的错误 - 这是因为我对这是怎么回事作品。

import os
import time


r, w = os.pipe()
w = os.fdopen(w, 'w')
r = os.fdopen(r, 'r')


os.dup2(w.fileno(), sys.stdout.fileno())
a = "Now printing ...\n"
print a
b = os.read(r.fileno(), 10)
if b.find(a) == -1:
    raise 'Could not work!'

w.close()
r.close()

编辑:弄错了。我没有将sys.stdout设置为新的fd。以下行修复了它:

sys.stdout = w.fileno()

0 个答案:

没有答案