6

私は単純なCプログラムを持っています"./my_program"

#include <stdio.h>

int main (int argc , char **argv) {


   unsigned int return_result = 0x474;
   printf("return_result = %d = 0x%x \n",return_result,return_result);
   return return_result;

}

その結果、このプログラムは以下を出力します。

return_result = 1140 = 0x474 

bash スクリプト内で c-program の戻り値を取得したい。このリンクによると とにかく、コマンドラインからCプログラムの戻り値を取得するには? この変数は $ から取得する必要がありますか?

しかし、そのようなコマンドを起動すると、次の結果になります。

./my_program
echo $?

私は得る

116

明らかに、116 = 0x74 (最下位バイト) です。しかし、unsigned int 値全体を取得したいと思います。なにが問題ですか?コマンドラインからCプログラムの戻り値全体を取得するにはどうすればよいですか? これは「unsigned int」型だけの問題ではありません。構造などの複雑なタイプを作成した場合はどうすればよいですか。

私はこれを試しました:

return ((unsigned int) return_result_section_size);

うまくいきません。

4

2 に答える 2

6

Unix の終了コードは1 バイトに制限されています。さらに出力したい場合は、代わりに stdout またはファイルに書き込むことができます。

では、なぜ C の標準命令はreturnで notをmain返すのでしょうか? 何も思いつきません...intchar

于 2012-05-07T09:15:20.007 に答える
0

The value returned from main can be printed using echo $? after you are done with the execution. The return value from main is generally used to indicate the execution status. The max value is limited to 512. If you try to return a greater value than 512, 512%val would be set in $?.

于 2012-05-07T09:22:39.297 に答える