2
我試圖從我的C程序在Linux中編譯某些文件,並給它們評分。 如果文件沒有編譯,我想給零分。我已經設法這樣做了,但在這種情況下我遇到了一個問題,因爲gcc正在向屏幕輸出消息(稱爲編譯錯誤)。當從C程序調用GCC時抑制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打印出來的消息。
如何將stderr重定向到文件? – 2013-03-24 12:57:41
必須是文件嗎?我不想爲此創建一個文件。 – Jjang 2013-03-24 12:58:11
重定向到'/ dev/null' - 沒有新文件將被創建 – user93353 2013-03-24 12:58:36