有很多示例顯示如何重定向另一個應用程序的stdout。不過,我想讓應用程序保留它的stdout,並只在我的父進程中檢索stdout的副本。這可能嗎?如何複製進程的標準輸出(複製,不重定向)?
我的場景:我有一些測試(使用Visual Studio Test Runner)啓動外部進程(服務器)來執行測試。服務器在其stdout中輸出很多有用的調試信息,我希望將其包含在我的測試結果中。
我可以捕獲過程輸出並通過Trace.WriteLine輸出,以便稍後顯示在測試細節中。然而,在測試運行時看到服務器窗口及其輸出,以查看當前進度(測試可以運行很長時間)會很好。
所以我正在尋找方法來複制這些信息,而不是簡單地重定向它。
任何想法?
mmm也許回聲/ T恤流可能有幫助嗎? 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