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

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

本文关键字:之间 返回 代码 0-255 检测 我的 shell 为什么      更新时间:2023-10-16

使用以下C++程序:

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

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

$ ./test
$ echo $?
255
$

如果我运行:

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

它产生以下内容:

$ ./test
$ echo $?
0
$

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

C++允许您从main返回两个值:EXIT_SUCCESSEXIT_FAILURE。返回EXIT_SUCCESS与返回0相同,具有与调用std::exit(0)相同的效果。

返回值以实现定义的方式传递回操作系统,操作系统对该值所做的操作也是实现定义的。最后,还定义了从main返回任何其他值的语义。

C++在这个问题上没有什么好说的了。您需要查阅平台的文档。