在TutorialsPoint.com上,退出会传递值0
,而人们通常会传递1
。我甚至见过exit(3);
不同的值意味着什么?
答案 0 :(得分:8)
按照惯例,退出成功的程序调用{{1}}(或从exit
返回),值为0. Shell程序(实际上是大多数程序)将查找此项以确定程序是否正常跑成功与否。
任何其他值都被视为异常退出。这些值的含义是由相关程序定义的。
在Unix和类似系统上,只有退出值的低8位用作程序的退出代码,并在调用main
时返回到父进程。致电wait
等同于致电exit(n)
来自man page:
exit(n & 0xff)
函数会导致正常的进程终止和值 将exit()
的{{1}}返回给父母(参见status & 0377
(2))。
答案 1 :(得分:7)
要传递给exit
的唯一便携式值为0
,EXIT_SUCCESS
和EXIT_FAILURE
。后两者是<stdlib.h>
中定义的宏,它们是声明exit
函数的相同标头。
0
和EXIT_SUCCESS
通常都表示程序成功。 EXIT_FAILURE
表示它以某种方式失败了。 (EXIT_SUCCESS
几乎肯定定义为0
。)
对于类UNIX系统,EXIT_FAILURE
定义为1
,exit(1)
也很常见(虽然可移植性稍差)。某些操作系统可能使用不同的约定;例如,OpenVMS使用偶数值表示失败,使用奇数值表示成功,并使用一些特殊情况代码将exit(0)
映射到失败状态。
某些程序可能会使用其他值来指示不同类型的故障。例如,grep
命令在找到匹配时使用0
,如果未找到匹配则使用1
,如果发生其他错误则使用2
。
答案 2 :(得分:3)
int main()
{
exit(0);
}
与
相同int main()
{
return 0;
}
返回值基本上是错误代码:
0
(或EXIT_SUCCESS
中定义的宏"stdlib.h"
表示程序成功终止1
(或EXIT_FAILURE
中定义的宏"stdlib.h"
)表示因失败而导致程序终止其他错误代码也是可能的,但它们是系统相关的,因此不属于C标准,即它们不可移植。
答案 3 :(得分:2)
退出值取决于程序。最大的考虑可能是大多数(所有?)shell认为返回值为零意味着成功。任何其他值都表示失败。