谁能告诉我? C语言中exit(0)
和exit(1)
之间有什么区别?
答案 0 :(得分:104)
C语言中exit(0)
和exit(1)
之间的区别是什么?
exit(0)
表示程序终止成功&它是完全便携的,而
exit(1)
(通常)表示未终止。但是,它的使用是不可移植的。
请注意,C标准定义EXIT_SUCCESS
和EXIT_FAILURE
以从C程序返回终止状态。
0
和EXIT_SUCCESS
是标准指定的值,表示成功终止,但是,只有EXIT_FAILURE
是返回不合理终止的标准值。在许多实现中,1
用于相同的目的。
参考:
C99标准:7.20.4.3 exit
功能
第5段
最后,控制权返回给主机环境。如果status的值为零或
EXIT_SUCCESS
,状态成功终止的实现定义形式 回。如果状态值为EXIT_FAILURE
,则为实现定义形式 返回状态不成功的终止。否则返回的状态是 实施德音响定义
答案 1 :(得分:10)
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_FAILURE
和exit
是实现定义的,但通常分别设置为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(),并将非零值用作错误代码。
答案 9 :(得分:0)
exit(0)
表示程序(进程)正常终止成功..
exit(1)
表示程序(进程)正常终止失败..
如果你想观察这件事,你必须知道Unix中的信号处理和过程管理......
了解sigaction
,watipid()
.. for()......例如...... API ...........
答案 10 :(得分:0)
exit function
。在C编程语言中,出口函数调用在出口处注册的所有函数,并终止程序。
exit(1)
表示程序(进程)未成功终止。
刷新文件缓冲区,关闭流,并删除临时文件
exit(0)
表示程序(进程)成功终止。