通过C#运行时,从命令行获取GCC的输出

时间:2012-11-14 23:18:27

标签: c# c#-4.0 c#-3.0

我目前正在通过我的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。

2 个答案:

答案 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写入标准输出。