0

名前付きパイプを使用してパッチコマンドの出力をリダイレクトしようとしています。私はこのように試しました:

fifo = os.path.join(self.path, 'pipe')
os.mkfifo(fifo)
op = os.popen('cat '+ fifo)
proc = Popen(['patch', current_keyframe, '--input='+fpath, '--output='+fifo], stdin=PIPE, stdout=PIPE)
os.unlink(fifo)
print op.read()

しかし、パッチコマンドが完了しなかったように、私のスクリプトはPopen()呼び出しで停止します。どうすれば適切に機能させることができますか?

4

1 に答える 1

1

fifo から読み取る前に patch コマンドが終了するのを待っていません。subprocess.Popen()呼び出しをに置き換え、subprocess.call()使用していない stdin/stdout リダイレクトを削除します。また、open(fifo)ではなく fifo から読み取るために使用しますos.popen('cat ' + fifo)

FIFO を完全に回避できると思いますか? の後p = Popen(['patch', '--input', fpath], stdout=PIPE)、p.stdout からパッチの出力を読み取ることができます。

于 2010-01-20T10:28:46.767 に答える