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

我试图返回一个更大的值,如1000forms,我的主要function,但是当我inputecho $? 它显示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参考页面 。

Bash也使用128-255作为信号 – 它们表示进程被一个信号中止: exit code = 128 + signal number 。 所以你可能会使用接近255的数字,因为信号数量不会太高。

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

所以你想从你的程序中返回一个任意的整数,最好把它打印到stdout中,并用你的bash脚本中的VALUE=$(program)来捕获它。

main (即应用程序的退出状态)的返回值被限制在* NIX的范围[0,255]。 1000超出范围,据推测,OS将其视为0。

在Unix-land中, main返回值是有限的,因为exit限制在8位字节的范围内。

在Windows中,有一个值为STILL_ACTIVE ,值为259,最好避免使用退出代码。

除此之外,在Windows中,您可以返回一个32位的代码,如HRESULT ,通常这样做。