我试图从我的主函数返回一个更大的值,比如 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/