1

私は経験がない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()
4

0 に答える 0