从C程序调用GCC时,抑制GCC错误输出

我试图从我的C程序在Linux中编译某些文件,并给他们评分。 如果文件没有编译,我想给零分。 我已经设法这样做了,但是在这种情况下我遇到了一个问题,因为gcc正在向屏幕输出一条消息(所谓的编译错误)。

我一直在Google上search,并在那个男人身上找了一个可以阻止它的标志,但是还没有find。

有谁知道什么是国旗? 否则,也许还有其他解决scheme?

这是我的代码:

//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仍然打印出消息。

在C标准中, freopen函数将给定流( stderr )与给定路径( "/dev/null" )的文件相关联,指定其模式( "w" )。

 #include <stdio.h> freopen ("/dev/null", "w", stderr);