我没有经验os.pipes()
,因此将不胜感激。
问题:我想将我的进程的标准输出重定向到一个管道,并从另一端读取它。我的初稿是这段代码。我似乎在写入管道的写入端,但随后我无法从读取端读取它,并且读取调用阻塞..我想有一些愚蠢的错误 - 这是由于我对如何做到这一点缺乏了解作品。
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()