33530


gccを使い、OSコマンドを実行する関数を作っています。  
エラーコードがあったら、エラーコードを返したいのですが、エラーコードが返りません。  
どうすればいいのでしょうか？

[code]

    //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;
    }
    
[/code]


CC BY-SA 4.0
2017-03-25T07:44:16.777
33523
2020-08-18T05:56:40.190
2020-08-18T05:56:40.190
7500
21169
question
c
gccでOSコマンドを実行するプログラムについて。


gccの出力は不要であれば、`system`関数を使い、その返り値を評価すればよいと思います。  
質問のケースで言えば、このような感じでしょうか?

[code]

    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);
    }
    
[/code]

`gcc`の出力が必要であれば、  
metropolisさんのコメントのように、`pclose`関数の戻り値を取得すればよいと思います。


CC BY-SA 3.0
2017-03-25T12:10:30.180
33530
2017-03-25T12:10:30.180
20098
33523
answer