我目前正在通过我的C#应用程序编译C程序。 如果gcc输出任何内容,则表示存在错误。我想检索此错误并将其显示给用户。
目前,我正在这样做......
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = _cCompilerPath,
Arguments = " ./file.c",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
string message = string.Empty;
while (!proc.StandardOutput.EndOfStream)
{
string line = proc.StandardOutput.ReadLine();
message = string.Concat(message, line);
}
MessageBox.Show("OUTPUT :" + message);
但即使程序中存在错误,也不会将任何内容重定向到标准输出,并且EndOfStream始终返回true。
答案 0 :(得分:3)
我敢打赌,它正在写给StandardError
。
RedirectStandardError = true,
....
while (!proc.StandardError.EndOfStream)
{
string line = proc.StandardError.ReadLine();
message = string.Concat(message, line);
}
答案 1 :(得分:1)
如果您正在使用控制台,请使用Console.WriteLine("message");
。 MessageBox
适用于WinForms应用程序。
Console.WriteLine("OUTPUT: {0}", message);
Console.WriteLine
写入标准输出。