为什么我的 shell 只检测到 0 - 255 之间的 return 代码?

Why is my shell only detecting return codes between 0 - 255?

采用以下 C++ 程序:

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

当我在 zshbashsh 中 运行 这个程序时,我得到以下结果:

$ ./test
$ echo $?
255
$

如果我运行:

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

它产生以下内容:

$ ./test
$ echo $?
0
$

shell 解释 0 - 255 之间的 return 代码是否正常?
是否可以产生超出此范围的值?

C++ 允许您 return 来自 main 的两个值:EXIT_SUCCESSEXIT_FAILURE。返回 EXIT_SUCCESS 与 returning 0 相同,与调用 std::exit(0).

具有相同的效果

return 值以实现定义的方式传回操作系统,OS 对该值的作用也是实现定义的。最后,returning 来自 main 的任何其他值的语义也是实现定义的。

C++ 在这个问题上无话可说。您需要查阅您平台的文档。