哪些 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
的 便携式 值只有 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
。
在 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 ofstatus & 0377
is returned to the parent (seewait
(2)).
int main()
{
exit(0);
}
与
相同int main()
{
return 0;
}
return 值基本上是错误代码:
0
(或"stdlib.h"
中定义的宏EXIT_SUCCESS
)表示程序终止成功1
(或"stdlib.h"
中定义的宏EXIT_FAILURE
)表示程序因失败而终止
其他错误代码也是可能的,但它们是系统相关的,因此不是 C 标准的一部分,即它们不可移植。
要传递给 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
。