在C#中,可以使用Process
类来启动控制台应用程序并实时读取命令行输出。下面是一个示例代码:
using System;
using System.Diagnostics;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
// 创建一个新的进程对象
Process process = new Process();
// 设置要启动的应用程序和参数
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/c your_console_app.exe";
// 设置为使用操作系统外壳程序启动进程
process.StartInfo.UseShellExecute = false;
// 重定向标准输入、输出和错误输出
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardInput = true;
// 设置进程输出数据接收事件处理程序
process.OutputDataReceived += new DataReceivedEventHandler(OutputDataReceived);
process.ErrorDataReceived += new DataReceivedEventHandler(ErrorDataReceived);
// 启动进程
process.Start();
// 开始异步读取输出和错误输出流
process.BeginOutputReadLine();
process.BeginErrorReadLine();
// 向标准输入流写入命令
process.StandardInput.WriteLine("your_command");
// 等待进程退出
process.WaitForExit();
}
// 输出数据接收事件处理程序
static void OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (!string.IsNullOrEmpty(e.Data))
{
Console.WriteLine("Output: " + e.Data);
}
}
// 错误输出数据接收事件处理程序
static void ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
if (!string.IsNullOrEmpty(e.Data))
{
Console.WriteLine("Error: " + e.Data);
}
}
}
}
上述代码中,通过创建一个Process
对象,设置要启动的应用程序和参数,并将标准输入、输出和错误输出重定向到程序中。然后,通过订阅OutputDataReceived
和ErrorDataReceived
事件来实时读取命令行输出和错误输出。最后,通过StandardInput
向标准输入流写入命令。
请注意,上述代码中的your_console_app.exe
和your_command
需要替换为实际的控制台应用程序和命令。
这是一个基本的示例,你可以根据实际需求进行修改和扩展。在实际应用中,你可能需要处理更复杂的命令行交互、错误处理等情况。
领取专属 10元无门槛券
手把手带您无忧上云