2

重複の可能性:
C または Python で popen を使用してサブプロセス出力のバッファリングをバイパスする

無期限に実行する必要があるサーバー コマンド ライン スクリプトのラッパーを作成しています。私がする必要があるのは、サブプロセスが終了するのを待たずに現在のスタウトを取得することです。

つまり、次を実行すると、すべて正常に動作します。

ls = Popen(["ls"], stdout=PIPE)
output = ls.stdout.read()

しかし、無期限に実行中のプログラムで同じことを行うと、次のようになります。

server = Popen(["python","-m","SimpleHTTPServer"], stdout=PIPE)
output = server.stdout.read()

それは戻ってこない...

更新:偶数

 output = server.stdout.read(1) 

ハング...

OSに依存しない方法でPopen(または同様のスレッド実装)から部分的な出力をキャプチャする方法があるかどうか知っていますか?

4

1 に答える 1

-1

read()は内容全体を返すと思いますか?ループ内で固定サイズのチャンクを読み取ると、より良い結果が得られる場合があります。

于 2009-10-05T21:40:03.673 に答える