C中的exit(0)和exit(1)有什么区别?
谁能告诉我? C语言中exit(0)
和exit(1)
什么区别?
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
function
第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_SUCCESS
和EXIT_FAILURE
是实现定义的,但通常分别设置为0
和一个非零数字。 (POSIX需要EXIT_SUCCESS
为0)。 所以通常exit(0)
意味着成功和exit(1)
失败。
在main
函数中使用参数的exit
函数调用相当于使用相同参数的语句return
。
exit(0)
在main()
函数中的行为类似于return 0
, exit(1)
行为类似于return 1
。 标准是, main
函数return 0
,如果程序成功结束,非零值表示程序终止某种错误。
exit是一个系统调用,用于完成从中调用它的运行进程。 要退出的参数用于通知父进程有关subprocess的状态。 所以,可以使用exit(0)来表示成功执行进程并退出(1)标记错误。 参考链接
当可执行文件结束(退出)时,它会向运行它的shell返回一个值。 exit(0)
通常表示一切正常, exit(1)
表示出现了问题。
应始终使用整数值调用exit(),并将非零值用作错误代码。
另请参阅: 使用exit()函数
exit(0)
表示程序(进程)正常终止正常。
exit(1)
意味着程序(进程)正常终止不成功。
如果你想观察这个东西,你必须知道Unix中的信号处理和过程pipe理。
了解sigaction
, watipid()
.. watipid()
)…等…. API ………..
退出(0)相当于退出(EXIT_SUCCESS)。
退出(1)相当于退出(EXIT_FAILURE)。
通常情况下,失败返回任何正面的价值退出进程,你可以find壳上使用$?。
值超过128是由信号引起的终止。 所以如果任何shell命令以信号结束,返回状态必须是(128 +信号编号)。
例如:
如果任何shell命令被SIGINT终止,那么$? 会给130(128 + 2)(这里2是SIGINT的信号编号,用kill -l检查)