他のアプリケーションの標準出力をリダイレクトする方法を示す多くの例があります。しかし、私はアプリケーションがstdoutを維持し、親プロセスのstdoutのコピーのみを取得するようにしたいと思います。これは可能ですか?プロセスの標準出力をコピーするにはどうすればいいですか(コピー、リダイレクトはしません)?
私のシナリオ:私は彼らのテストを行うための外部プロセス(サーバー)を起動する(Visual Studioのテストランナーを使用して)いくつかのテストを持っています。サーバーは、テスト結果に含めるstdoutに多くの有用なデバッグ情報を出力します。
私はそれが後でテストの詳細に表示できるようにTrace.WriteLineを介してプロセスの出力と、それをキャプチャすることができます。しかし、現在の進捗状況を確認するためにテストが実行されている間に、サーバーウィンドウに出力を表示すると良いでしょう(テストは長い時間稼働している可能性があります)。
私はこの情報を単純にリダイレクトするのではなくコピーする方法を探しています。
アイデア?
mmmおそらくエコー/ティーストリームは役に立ちますか? http://www.codeproject.com/KB/dotnet/echostream.aspx(google 'C#tee stream'より多くのヒットが得られます) – sehe
ここではテストはできませんが、それについてはわかりませんが、実際にはProcess.OutputDataReceivedイベントhttp://msdn.microsoft.com/en-us/library/system.diagnostics.process.outputdatareceived.aspx – Polity
OutputDataReceivedは私が使用しているものですが、ストリームのリダイレクトが必要なため、削除しますサーバーのコンソールウィンドウからの出力... – aKzenT