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はまだメッセージを出力します。