process.StandardOutput.ReadToEnd()没有获得总StandardOutput

时间:2018-04-12 00:27:44

标签: c# visual-studio cppcheck

我有一个C#应用程序,可以访问命令行工具" cppcheck"然后应该将此命令行工具的输出保存到变量"输出"。

以下是代码:

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();

startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C cppcheck" + " \"" + currentEvent.currentEventFilePath + "\"";

startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;

process.StartInfo = startInfo;
process.Start();


//the following line is the problem. Output of cppcheck is not completely read:
 string output = process.StandardOutput.ReadToEnd();
 process.WaitForExit();

问题是函数ReadToEnd()实际上看起来没有读到最后...而是在我需要的重要部分之前停止。

这是cppcheck的总输出: enter image description here

但是只有这个文本的上半部分被保存到变量"输出",即这部分:

enter image description here

如何捕获cppcheck的整个输出?

1 个答案:

答案 0 :(得分:1)

您还应该加入Process.StandardError

string error = p.StandardError.ReadToEnd();