什么int值与C中的exit()相关?

时间:2016-04-28 02:51:19

标签: c exit

TutorialsPoint.com上,退出会传递值0,而人们通常会传递1。我甚至见过exit(3);

不同的值意味着什么?

4 个答案:

答案 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的唯一便携式值为0EXIT_SUCCESSEXIT_FAILURE。后两者是<stdlib.h>中定义的宏,它们是声明exit函数的相同标头。

0EXIT_SUCCESS通常都表示程序成功。 EXIT_FAILURE表示它以某种方式失败了。 (EXIT_SUCCESS几乎肯定定义为0。)

对于类UNIX系统,EXIT_FAILURE定义为1exit(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认为返回值为零意味着成功。任何其他值都表示失败。