我该怎么做才能从命令行获取c-program的整个返回值?

时间:2012-05-07 09:11:27

标签: c bash unix return

我有一个简单的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的返回值。 根据这个链接 Anyway to get return value of c program from command line? 我应该从$?

获得这个变量

但是当我发起这样的命令后果:

./my_program
echo $?

我得到了

116

很明显,116 = 0x74(最低字节)。 但我想获得整个unsigned int值。 怎么了?我该怎么做才能从命令行获取c-program的整个返回值?这不仅仅是“unsigned int”类型。如果我创建了一些复杂的类型,我应该怎么做,例如, - structure。

我试过了:

return ((unsigned int) return_result_section_size);

它不起作用。

2 个答案:

答案 0 :(得分:6)

Unix上的退出代码是restricted to a single byte。如果要输出更多,可以将其写入stdout或文件。

那么为什么C标准判定main返回int而不是char?我不知道......

答案 1 :(得分:0)

从main返回的值可以使用echo $打印吗?完成执行后。 main的返回值通常用于指示执行状态。 最大值限制为512.如果您尝试返回大于512的值,则将在$?中设置512%val。