为什么我不能从main函数返回更大的值?

Sea*_*ock 20 c++ linux exit-code

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

如果我返回一个较小的值,如100,则显示正确的值.

我的代码:

int main(void)
{
     return 1000;
}
Run Code Online (Sandbox Code Playgroud)

对我们可以返回的价值有任何限制吗?

Dou*_*der 22

这里有两个相关的概念:C退出状态和bash返回代码.它们都覆盖范围0-255,但是bash使用126以上的数字用于它自己的目的,因此从程序中返回它们会很困惑.

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

C退出状态被放入bash $?执行后变量,但是bash使用127表示"未找到命令",因此您可能希望避免这种情况.Bash参考页面.

Bash还使用128-255作为信号 - 它们表示该过程被信号杀死: exit code = 128 + signal number.所以你可能能够使用接近255的数字,因为信号数字不太可能会那么高.

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

因此,您希望从程序中返回任意整数,最好将其打印到stdout,然后VALUE=$(program)从bash脚本中捕获它.