c++ - 为什么我不能从主函数返回更大的值?

标签 c++ linux exit-code

我试图从我的主函数返回一个更大的值,比如 1000,但是当我输入 echo $? 时它显示 0。

如果我返回一个较小的值,例如 100,它会显示正确的值。

我的代码:

int main(void)
{
     return 1000;
}

我们可以返回的值有什么限制吗?

最佳答案

这里有两个相关的概念:C 退出状态和 bash 返回码。它们都涵盖了 0-255 的范围,但 bash 出于自己的目的使用高于 126 的数字,因此从您的程序中返回这些数字会令人困惑。

为了安全起见,将退出状态代码限制为 0-127,因为这是最便携的,至少 http://docs.python.org/library/sys.html#sys.exit 暗示了这一点.

C 退出状态放入 bash $?执行后变量,但 bash 使用 127 表示“找不到命令”,因此您可能希望避免这种情况。 Bash reference page .

Bash 还使用 128-255 作为信号 - 它们表明进程被信号杀死: 退出代码 = 128 + 信号编号。因此,您或许可以避免使用接近 255 的数字,因为信号数字不太可能达到那么高。

除了这些常见的指导方针之外,还有许多尝试来定义不同数字的含义:http://tldp.org/LDP/abs/html/exitcodes.html .

因此,如果您想从程序中返回任意整数,最好将其打印到标准输出,然后使用 bash 脚本中的 VALUE=$(program) 捕获它。

关于c++ - 为什么我不能从主函数返回更大的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734102/

相关文章:

shell - 在 Unix shell 脚本中设置退出代码

如果在没有 shell 的情况下运行,Ruby 将以退出代码 1 响应 TERM 退出

c++ - 这三种初始化静态变量的方式有什么区别?

c++ - 带 IP 地址的命名管道连接

android - 无法在 Linux 上启动 Android 设备模拟器

linux - 如何生成可以在 macOS 和 Linux 上运行的可执行文件

c++ - 需要解释从 3d 数组到 1d 数组的 memcpy

c++ - 调试器如何窥探另一个进程的内存?

regex - 删除linux中第二个重复指定字符前的数据

php - 退出并显示 PHP/HTML 中的错误消息