2

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

4

2 回答 2

3

我敢打赌它正在写信给StandardError

    RedirectStandardError = true,

    ....

    while (!proc.StandardError.EndOfStream)
    {
        string line = proc.StandardError.ReadLine();
        message = string.Concat(message, line);      
    }
于 2012-11-14T23:26:21.940 回答
1

Console.WriteLine("message");如果您正在使用控制台,请使用。MessageBox用于 WinForms 应用程序。

Console.WriteLine("OUTPUT: {0}", message);

Console.WriteLine写入标准输出。

于 2012-11-14T23:21:46.473 回答