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");コンソールで作業している場合に使用します。MessageBoxWinFormsアプリケーション用です。

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

Console.WriteLine標準出力に書き込みます。

于 2012-11-14T23:21:46.473 に答える