哪些 int 值与 C 中的 exit() 相关?

What int values are relevant for exit() in C?

TutorialsPoint.com,出口传递值 0,而人们通常传递它 1。我什至看过 exit(3);

不同的值是什么意思?

退出值取决于程序。最大的考虑可能是大多数(所有?)shell 认为 return 值为零表示成功。任何其他值表示失败。

按照惯例,成功退出的程序调用 exit(或 main 中的 returns),值为 0。 Shell 程序(大多数程序,实际上) 将寻找它来确定程序 运行 是否成功。

任何其他值都被视为异常退出。这些值中的每一个的含义由相关程序定义。

在 Unix 和类似系统上,只有退出值的低 8 位用作程序的退出代码,并在调用 wait 时返回给父进程。调用 exit(n) 等同于调用 exit(n & 0xff)

来自man page

The exit() function causes normal process termination and the value of status & 0377 is returned to the parent (see wait(2)).

int main()
{
   exit(0);
}

相同
int main()
{
   return 0;
}

return 值基本上是错误代码:

  • 0(或"stdlib.h"中定义的宏EXIT_SUCCESS)表示程序终止成功
  • 1(或"stdlib.h"中定义的宏EXIT_FAILURE)表示程序因失败而终止

其他错误代码也是可能的,但它们是系统相关的,因此不是 C 标准的一部分,即它们不可移植。

要传递给 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