为什么我的shell只检测0到255之间的返回码?

时间:2016-06-07 14:23:14

标签: c++ bash shell zsh return-code

采用以下C ++程序:

colb

当我在#include <cstdlib> int main(){exit(-1);} zshbash中运行此程序时,我会得到以下结果:

sh

如果我跑:

$ ./test
$ echo $?
255
$

它产生以下内容:

#include <cstdlib>
int main(){exit(256);}

shell解释0到255之间的返回码是否正常? 是否有可能产生超出此范围的值?

1 个答案:

答案 0 :(得分:5)

C ++允许您从$('...').tab()mainEXIT_SUCCESS返回两个值。返回EXIT_FAILURE与返回EXIT_SUCCESS相同,效果与调用0相同。

返回值以实现定义的方式传递回操作系统,操作系统对该值的操作也是实现定义的。最后,从std::exit(0)返回任何其他值的语义也是实现定义的。

C ++在这个问题上没有更多的话要说。您需要查阅平台的文档。