我应该怎么做才能从命令行获得c程序的全部返回值?

我应该怎么做才能从命令行获得c程序的全部返回值?,c,bash,unix,return,C,Bash,Unix,Return,我有一个简单的C程序“/my_程序” 我想在bash脚本中获取c-program的返回值。 根据这个链接 我应该从$中获取此变量 但当我发出这样的命令时: ./my_program echo $? 我明白了 116 显然,116=0x74(最低字节)。 但我想得到整个无符号int值。 怎么了?我应该怎么做才能从命令行获得c程序的全部返回值?这不仅仅是“unsigned int”类型。如果我创建了一些复杂的类型,例如,-结构,我该怎么办 我试过这个: return ((unsigned int

我有一个简单的C程序
“/my_程序”

我想在bash脚本中获取c-program的返回值。 根据这个链接 我应该从$中获取此变量

但当我发出这样的命令时:

./my_program
echo $?
我明白了

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

我试过这个:

return ((unsigned int) return_result_section_size);
它不工作。

Unix上的退出代码无效。如果您想输出更多,可以将其写入标准输出或文件


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

可以使用echo$打印main返回的值?在你执行完死刑之后。main的返回值通常用于指示执行状态。
最大值限制为512。如果您试图返回大于512的值,512%val将设置为$?。

可能是因为对于不需要更大值的数字,通常使用
int
。出于同样的原因,它是
int-argc
,而不是
unsigned int-argc
,仅仅因为Unix将退出代码限制为一个字节,并不意味着标准应该在其他平台上强制执行相同的限制。至于
main
开始返回
int
的原因,我猜是:1。返回平台的本机整数类型更自然;2.隐式
int
@jamesdlin:该标准不施加限制,但允许灵活性,并反映了多个平台的工作方式。该标准只考虑来自main的两个有效返回值:EXIT_SUCCESS和EXIT_FAILURE。任何其他值都是实现定义的。这允许某些平台仅返回最后返回的字节。只要EXIT_SUCCESS和0被视为成功,EXIT_FAILURE被视为失败,实现就可以自由地执行它想要的任何操作。要求main返回的值可用将是一个很大的限制。@williampersell:嗯,这是我的观点。问题是“为什么
main
不返回
char
”,我的回答是这样做会限制其他平台。可能是,您说的“最大值限制为255”?我刚刚试着返回474。结果不是474。Magic的最大值是512。你的公式是错误的。它应该是
val%MAX
。。。我认为我对最大值的理解是错误的。最大值限制为字节-255。请编辑您的答案,以便不需要阅读注释。
116
return ((unsigned int) return_result_section_size);