首页 >后端开发 >C++ >如何从.NET中的子过程中有效捕获标准输出?

如何从.NET中的子过程中有效捕获标准输出?

DDD
DDD原创
2025-01-25 03:36:08610浏览

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