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

标签 c++ bash shell zsh return-code

采用以下 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++ 在这个问题上没有更多可说的。您需要查阅平台的文档。

关于c++ - 为什么我的 shell 只检测 0 - 255 之间的返回码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37682004/

相关文章:

linux - 对文件进行计数,如果计数大于给定限制,则删除剩余文件

bash - 语法 `while IFS= read line` 记录在哪里?

linux - 在 Unix shell 中,如何检查用户的权限,如果用户没有权限,如何产生错误消息?

linux - 退出 shell 脚本时如何杀死所有子进程?

c++ - 你可以在Windows中对字符串进行 `memset()`吗?

c++ - 我可以在编译时检查成员函数是否是运算符吗?

linux - 如何在 unix 中删除文件的最后一个字符?

bash - awk 以秒为单位的日期范围

c++ - 外部关键字 "missing type specifier"

c++ - 无需重新创建匹配 map