我试图从我的主函数返回一个更大的值,比如 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 参考页面。
Bash 还使用 128-255 作为信号 - 它们表明进程被信号杀死:
exit code = 128 + signal number
. 因此,您可能可以避免使用接近 255 的数字,因为信号数字不太可能达到那么高。
除了这些常见的指导方针之外,还有许多尝试定义不同数字的含义:http ://tldp.org/LDP/abs/html/exitcodes.html 。
所以如果你想从你的程序中返回一个任意整数,最好将它打印到标准输出,并VALUE=$(program)
从你的 bash 脚本中捕获它。
的返回值main
(即应用程序的退出状态)在*NIX 上被限制在[0, 255] 范围内。1000 超出范围,操作系统可能将其视为 0。
在 Unix-land 中,返回值main
是有限的,因为exit
限制在 8 位字节的范围内。
在 Windows 中,有一个STILL_ACTIVE
值为 259 的值,最好避免将其作为进程退出代码。
除此之外,在 Windows 中,您可以返回HRESULT
通常执行的 32 位代码,例如和。