在 .NET 中启动子进程并捕获标准输出
.NET 提供了创建子进程并重定向其标准输出以捕获输出的方法。Process
类提供了用于生成和操作进程的方法。
原始代码及其局限性
提供的代码试图解决这个问题,但遇到了一些问题。由于 WaitForExit()
方法阻塞了线程,因此 OutputDataReceived
事件处理程序不会被调用。
改进方法
改进后的代码提供了一个可行的解决方案:
<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>
此代码使用 BeginOutputReadLine()
方法开始侦听来自子进程的输出数据。OutputDataReceived
事件处理程序现在可以正确调用,并且可以在事件处理程序中访问捕获的输出。
以上是如何从 .NET 中的子进程捕获 STDOUT?的详细内容。更多信息请关注PHP中文网其他相关文章!