2

LinuxでCプログラムから特定のファイルをコンパイルし、それらにグレードを付けようとしています。ファイルがコンパイルされなかった場合、ゼログレードを与えたいのですが。私はすでにそうすることができましたが、gccが画面にメッセージを出力しているため(いわゆるコンパイルエラー)、この場合は問題があります。

私はグーグルをしていて、それを妨げる旗を探していましたが、まだ見つけていません。

誰かが旗が何であるか知っていますか?または、他の解決策があるかもしれませんか?

これが私のコードです:

//child process
    if((pid=fork())==0)
    {
        execl("/usr/bin/gcc", "/usr/bin/gcc", "-o", outpath, fullpath,NULL);
    }
    else
    {
        wait(&stat);
        if(WIFEXITED(stat))
        {
            stat=WEXITSTATUS(stat);
            if(stat!=0)
            {
                if(write(fdresult,",0\r\n",4)==-1)
                {
                    perror("Writing result.csv has failed.");
                    exit(1);
                }
                continue;
            }
        }
    }

注:このコードは機能します。ファイルがコンパイルされないときにgccがエラーを出力しないようにする方法が必要です。

ありがとう!

編集:追加してみました

dup2("/dev/null",2);

execlの直前ですが、gccはまだメッセージを出力します。

4

1 に答える 1

3

C標準では、freopen関数は指定されたストリーム(stderr)を指定されたパス()のファイルに関連付け、"/dev/null"そのモード("w")を指定します。

#include <stdio.h>

freopen ("/dev/null", "w", stderr);
于 2013-03-24T13:11:20.013 に答える