2012-04-15 14 views
4

でプログラムを実行しています。出力をリダイレクトしてラインを取得しようとしました。STDOUTの最後の行を読む

今のところ、私は最後の行だけが必要です。

最後の行だけを読む方法はありますか、それでもredirectStandaroutput = false;などが必要ですか?

もっと簡単な方法はありますか?

process.Redirect()に行かなければならない場合は、MSDNなどのソースでoutputdatareceivedイベントの例を試してみましたが、出力が最後にコンソールに書き込まれ、非同期ではありません。

+3

いいえ、簡単な方法はありません。出力全体を読み、最後の行以外のすべてを単に破棄する必要があります。 – Servy

+0

ありがとうServy。私は完全なopを読むでしょう。 – user393148

+0

または、StreamReader.ReadLine() - > http://www.gamedev.net/topic/521470-c-launching-another-process-and-capturing-stdout/を使用して行ごとに読み取ることができます。 – blez

答えて

1

process.Start()を使用すると、私が知っている出力を読み取る唯一の方法は.RedirectStandardInput = true;です。 Standart出力はストリームオブジェクトなので、最後の行はストリーム全体を読み取ることによってのみ読み取ることができます。

BTW proc.StandardOutput.ReadToEnd()は、プロセスが終了するまでスレッドをハングアップし、読み込み中にプロットを取得するとアプリがハングアップします。

関連する問題