C中的exit(0)和exit(1)有什么区别?

时间:2012-03-30 14:20:59

标签: c

谁能告诉我? C语言中exit(0)exit(1)之间有什么区别?

11 个答案:

答案 0 :(得分:104)

C语言中exit(0)exit(1)之间的区别是什么?

exit(0)表示程序终止成功&它是完全便携的,而
exit(1)(通常)表示未终止。但是,它的使用是不可移植的。

请注意,C标准定义EXIT_SUCCESSEXIT_FAILURE以从C程序返回终止状态。

0EXIT_SUCCESS是标准指定的值,表示成功终止,但是,只有EXIT_FAILURE是返回不合理终止的标准值。在许多实现中,1用于相同的目的。


参考:

C99标准:7.20.4.3 exit功能
第5段

  

最后,控制权返回给主机环境。如果status的值为零或   EXIT_SUCCESS,状态成功终止的实现定义形式   回。如果状态值为EXIT_FAILURE,则为实现定义形式   返回状态不成功的终止。否则返回的状态是   实施德音响定义

答案 1 :(得分:10)

C语言中的

exit采用表示退出状态的整数。

退出成功

通常,退出状态为0会被视为成功,或者是程序成功执行导致的故意退出。

退出失败

退出状态1被视为失败,并且最常见的意思是程序由于某种原因必须退出,并且无法成功完成正常程序流程中的所有内容。

这是GNU Resource谈论退出状态。


正如@Als所说,应该用两个常数代替0和1。

EXIT_SUCCESS由标准定义为零。

EXIT_FAILURE不受标准限制为一,但许多系统确实将其作为一个实现。

答案 2 :(得分:8)

exit(0)表示程序终止且没有错误。 exit(1)表示存在错误。

您可以使用1以外的其他值来区分不同类型的错误。

答案 3 :(得分:2)

不同之处在于前一种情况下返回环境的值为0,后一种情况下返回1

$ ./prog_with_exit_0
$ echo $?
0
$

$ ./prog_with_exit_1
$ echo $?
1
$

另请注意,用作EXIT_SUCCESS函数的参数的宏值EXIT_FAILUREexit是实现定义的,但通常分别设置为0和非零数。 (POSIX要求EXIT_SUCCESS为0)。因此,通常exit(0)表示成功,exit(1)表示失败。

exit函数中使用参数的main函数调用等同于具有相同参数的语句return

答案 4 :(得分:2)

exit是一个系统调用,用于完成调用它的运行进程。要退出的参数用于通知父进程有关子进程的状态。因此,可以使用exit(0)(并且经常使用)来指示进程的成功执行,并退出(1)以标记错误。 reference link

答案 5 :(得分:1)

exit(0)return 0函数中的行为类似于main()exit(1)的行为与return 1相似。标准是,main函数return 0,如果程序成功结束,而非零值意味着程序因某种错误而终止。

答案 6 :(得分:1)

exit(0)等同于exit(EXIT_SUCCESS)。

exit(1)相当于exit(EXIT_FAILURE)。

一旦失败,通常会返回任何正值以退出进程,您可以使用$?在shell上找到。

超过128的值导致信号终止。因此,如果任何shell命令被信号终止,则返回状态必须为(128 +信号编号)。

例如:

如果任何shell命令被SIGINT终止,那么$?会给130(128 + 2) (这里2是SIGINT的信号编号,使用kill -l检查)

答案 7 :(得分:0)

当可执行文件结束(退出)时,它会向运行它的shell返回一个值。 exit(0)通常表示一切都很好,而exit(1)表示某些事情已经不妥。

答案 8 :(得分:0)

应始终使用整数值调用

exit(),并将非零值用作错误代码。

另请参阅:Use of exit() function

答案 9 :(得分:0)

exit(0)表示程序(进程)正常终止成功..

exit(1)表示程序(进程)正常终止失败..

如果你想观察这件事,你必须知道Unix中的信号处理和过程管理......

了解sigactionwatipid() .. for()......例如...... API ...........

答案 10 :(得分:0)

exit function。在C编程语言中,出口函数调用在出口处注册的所有函数,并终止程序。

exit(1)表示程序(进程)未成功终止。 刷新文件缓冲区,关闭流,并删除临时文件

exit(0)表示程序(进程)成功终止。