首頁 >後端開發 >C++ >如何有效地從 .NET 子程序捕獲標準輸出?

如何有效地從 .NET 子程序捕獲標準輸出?

DDD
DDD原創
2025-01-25 03:36:08668瀏覽

How Can I Efficiently Capture Standard Output from a Child Process in .NET?

在 .NET 中高效捕獲子進程標準輸出

從 .NET 中的子程序檢索標準輸出 (STDOUT) 可能很棘手。本文根據開發者的經驗詳細介紹了解決方案。

開發人員最初使用事件驅動的回調來捕獲作為子進程啟動的控制台應用程式的輸出。然而,這種方法導致了僵局,導致 OutputDataReceived 事件無法觸發。

解決方案涉及切換到從進程的 StandardOutput 流直接讀取:

<code class="language-csharp">return p.StandardOutput.ReadToEnd();</code>

此方法有效捕捉所有流程輸出。

或者,BeginOutputReadLine() 方法提供了事件驅動的方法:

<code class="language-csharp">process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += (sender, args) => Console.WriteLine("received output: {0}", args.Data);
process.Start();
process.BeginOutputReadLine();</code>

這些技術提供了從控制台應用程式捕獲 STDOUT 的可靠方法,增強了子進程的互動和監控。

以上是如何有效地從 .NET 子程序捕獲標準輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn