質問: 内容 -- **gccを使い、プログラムを実行する関数を作っています。** エラーコードがあったら、エラーコードを返したいのですが、 エラーコードが返りません。 どうすればいいのでしょうか? LC関数 ---- ``` //stdlibとstdio.hが必要 char *LC(int a,char b) { #define HOGE 500 char str[255]; static char st[HOGE]={'a'}; FILE *fp; sprintf(str,"gcc %c.c -o %c%d", b, b, a); fp=popen(str,"r"); while(1){ fgets(st,HOGE,fp); if(feof(fp)){ break; }} pclose(fp); return st; } ```
回答: gccの出力は不要であれば、`system`関数を使い、その返り値を評価すればよいと思います。 質問のケースで言えば、このような感じでしょうか? ``` int LC(int a,char b) { char str[255]; int result = 0; /* * 注: 標準出力、標準エラーからの出力は捨てるコマンドラインにする. */ sprintf(str,"gcc %c.c -o %c%d > /dev/null 2>&1", b, b, a); result = system(str); /* * 注: system()の仕様に従い、WEXITSTATUSマクロでコマンドの実行結果 * のみ取り出す. */ return WEXITSTATUS(result); } ``` `gcc`の出力が必要であれば、 metropolisさんのコメントのように、`pclose`関数の戻り値を取得すればよいと思います。