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 程序的返回值。根据这个链接 无论如何要从命令行获取c程序的返回值? 我应该从 $?

但是当我启动这样的命令结果时:

./my_program
echo $?

我明白了

116

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

我试过这个:

return ((unsigned int) return_result_section_size);

它不起作用。

4

2 回答 2

6

Unix 上的退出代码仅限于单个字节。如果要输出更多,可以将其写入标准输出或文件。

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

于 2012-05-07T09:15:20.007 回答
0

从 main 返回的值可以使用 echo $? 打印出来。在你完成执行之后。main 的返回值一般用来表示执行状态。最大值限制为 512。如果您尝试返回大于 512 的值,则会在 $? 中设置 512%val。

于 2012-05-07T09:22:39.297 回答