C# 读取运行进程的输出为空
我试图运行一个编译应用程序的进程(一个旧的基本编译器)。我故意在我试图编译的应用程序中出现错误,以查看如何读取可能返回的任何输出消息,但我在e.Data中只看到null。有人能告诉我,我下面的代码中是否有试图读取输出或错误数据的错误C# 读取运行进程的输出为空,c#,.net-4.0,C#,.net 4.0,我试图运行一个编译应用程序的进程(一个旧的基本编译器)。我故意在我试图编译的应用程序中出现错误,以查看如何读取可能返回的任何输出消息,但我在e.Data中只看到null。有人能告诉我,我下面的代码中是否有试图读取输出或错误数据的错误 private static void RunProcess(string filename, string args) { try { var processStartInfo = new ProcessStartInfo();
private static void RunProcess(string filename, string args)
{
try
{
var processStartInfo = new ProcessStartInfo();
processStartInfo.FileName = filename;
processStartInfo.Arguments = args;
processStartInfo.UseShellExecute = false;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.RedirectStandardError = true;
var result = string.Empty;
using (Process process = Process.Start(processStartInfo))
{
process.ErrorDataReceived += Process_ErrorDataReceived;
process.OutputDataReceived += Process_OutputDataReceived;
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
Console.Write("Completed process with an exit code of: " + process.ExitCode.ToString() + Environment.NewLine);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
private static void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine(e.Data);
}
private static void Process_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine(e.Data);
}
刚刚尝试执行
RunProcess(“cmd”,null)
,我可以看到进程输出。您确定要启动的进程(旧编译器)会写入标准输出吗?您能否从命令行启动编译器,将其输出重定向到文件,如old_compiler parameters>build_log.txt
,并检查它是否工作?我这样做了,build_log.txt为空。我想我可以假设它不写入标准输出??