首页 > 后端开发 > C++ > 如何在C#中执行命令行程序并检索其Stdout结果?

如何在C#中执行命令行程序并检索其Stdout结果?

DDD
发布: 2025-02-01 01:06:11
原创
513 人浏览过

How Can I Execute Command-Line Programs in C# and Retrieve Their STDOUT Results?

在 C# 中执行命令行程序并检索其 STDOUT 结果

在 C# 中执行命令行程序对于自动化任务或将外部工具集成到应用程序中非常有用。一个常见的挑战是检索程序的 STDOUT(标准输出)结果。

为此,您可以利用 System.Diagnostics 命名空间中的 Process 类。此类允许您创建和管理子进程,这些子进程是与主程序同时运行的独立可执行文件。

分步执行和 STDOUT 检索

  1. 创建一个新的 Process 实例。 使用 Process 类构造函数实例化一个对象。
  2. 配置进程执行参数。 设置进程的 StartInfo 属性以配置其执行行为。例如,您可以将 FileName 指定为您要执行的命令行程序的路径。
  3. 禁用 shell 执行。 默认情况下,C# 使用 shell 执行命令行程序。为避免潜在问题,请将 UseShellExecute 设置为 false
  4. 重定向标准输出。 通过将 RedirectStandardOutput 设置为 true 来启用标准输出重定向。这允许您在子进程写入控制台时读取其输出。
  5. 启动子进程。 调用 Start() 方法使用已配置的执行参数启动子进程。
  6. 读取 STDOUT 结果。 在等待子进程退出之前,使用 StandardOutput 属性将子进程的输出读取为字符串。然后,您可以使用此字符串根据需要显示或处理结果。
  7. 等待子进程完成。 读取 STDOUT 结果后,调用 WaitForExit() 方法等待子进程完成。

示例代码

以下代码片段演示了如何执行命令行程序(在本例中为 DIFF)并检索其 STDOUT 结果:

<code class="language-csharp">// 启动子进程。
Process p = new Process();
// 重定向子进程的输出流。
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "diff";
p.Start();
// 不要在读取其重定向流的末尾之前等待子进程退出。
// p.WaitForExit();
// 先读取输出流,然后再等待。
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();</code>
登录后复制

通过遵循这些步骤,您可以执行命令行程序并访问其标准输出结果,从而使您可以自动化任务并增强 C# 应用程序的功能。

以上是如何在C#中执行命令行程序并检索其Stdout结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板