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

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

C语言中exit(0)exit(1)什么区别?

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

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

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


参考:

C99标准:7.20.4.3 exitfunction
第5段

最后,控制权返回到主机环境。 如果状态值为零或EXIT_SUCCESS ,则返回状态成功终止的实现定义forms。 如果状态值为EXIT_FAILURE ,则返回状态不成功终止的实现定义forms。 否则,返回的状态是实现定义的。

exit(0)表示程序终止,没有错误。 exit(1)表示出现错误。

您可以使用不同于1值来区分不同types的错误。

以C语言exit需要一个表示退出状态的整数。

退出成功

通常情况下,0的退出状态被认为是成功的,或者是程序成功执行造成的故意退出。

退出失败

退出状态1被认为是失败的,通常意味着程序必须退出某个原因,并且不能在正常的程序stream程中成功地完成所有的事情。

这里有一个关于退出状态的GNU资源 。


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

EXIT_SUCCESS由标准定义为零。

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

不同的是,返回到环境的值在前一种情况下是0 ,在后一种情况下是1

 $ ./prog_with_exit_0 $ echo $? 0 $ 

 $ ./prog_with_exit_1 $ echo $? 1 $ 

还要注意,用作exit函数参数的macros值EXIT_SUCCESSEXIT_FAILURE是实现定义的,但通常分别设置为0和一个非零数字。 (POSIX需要EXIT_SUCCESS为0)。 所以通常exit(0)意味着成功和exit(1)失败。

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

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

exit是一个系统调用,用于完成从中调用它的运行进程。 要退出的参数用于通知父进程有关subprocess的状态。 所以,可以使用exit(0)来表示成功执行进程并退出(1)标记错误。 参考链接

当可执行文件结束(退出)时,它会向运行它的shell返回一个值。 exit(0)通常表示一切正常, exit(1)表示出现了问题。

应始终使用整数值调用exit(),并将非零值用作错误代码。

另请参阅: 使用exit()函数

exit(0)表示程序(进程)正常终止正常。

exit(1)意味着程序(进程)正常终止不成功。

如果你想观察这个东西,你必须知道Unix中的信号处理和过程pipe理。

了解sigactionwatipid() .. watipid() )…等…. API ………..

退出(0)相当于退出(EXIT_SUCCESS)。

退出(1)相当于退出(EXIT_FAILURE)。

通常情况下,失败返回任何正面的价值退出进程,你可以find壳上使用$?。

值超过128是由信号引起的终止。 所以如果任何shell命令以信号结束,返回状态必须是(128 +信号编号)。

例如:

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