xcorp::When it rains, it pours.

"The nice thing about rain," said Eeyore, "is that it always stops. Eventually."

コンソールアプリの標準出力と標準エラー出力をリダイレクトして取得

ヘルプに書いてあることと,実際の動きが違う(;´Д`)

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdiagnosticsprocessclassstandardoutputtopic.asp より

標準出力と標準エラー出力の両方をリダイレクトし、両方を読み取ろうとすると、似た問題が発生します。この例を次の C# コードで示します。

string output = p.StandardOutput.ReadToEnd();
string error = p.StandardError.ReadToEnd();
p.WaitForExit();

この例では、親プロセスは標準出力からの読み取りを終了するまで標準エラー出力から読み取ることができないため、子プロセスが標準エラー出力にテキストを書き込むと、プロセスがブロックされます。しかし、親プロセスはプロセスが終了するまで標準出力から読み取りません。この問題の解決方法としては、アプリケーションがそれぞれのスレッドでそれぞれのストリームの出力を読み取ることができるように、2 つのスレッドを作成する方法をお勧めします。

全然デッドロックしないじゃん!!!*1
それと,「アプリケーションがそれぞれのスレッドでそれぞれのストリームの出力を読み取ることができるように、2 つのスレッドを作成する方法をお勧め」するんならサンプル載せとけ!!! ボケが(`Д´)ノ

*1:ひょっとしたら,両方に出力するようなコンソールアプリだと発生するんかいな。そんな行儀の悪いアプリは知らん!!!