退出(0)的目的是什么?

时间:2012-07-30 17:58:46

标签: c linux exit

我了解exit(1)表示错误,例如:

if (something went wrong) 

     exit(EXIT_FAILURE);

但是使用exit(EXIT_SUCCESS);的目的是什么?

处理流程时可能吗?例如对于fork()

谢谢

4 个答案:

答案 0 :(得分:6)

这使得调用程序(通常是命令shell)的系统部分可以检查程序是否正常终止。

修改 - 开始 -

顺便说一下,通过使用$? shell变量,也可以查询交互式命令的退出代码。例如,这个失败的ls命令产生一个值为2的退出代码。

$ ls -3
ls: invalid option -- '3'
Try `ls --help' for more information.
$ echo $?
2

修改 - 结束 -

想象一下调用一系列程序的批处理文件(或shell脚本),根据每次运行的结果,可以选择某个动作或其他动作。此操作可能包含向用户发送的简单消息,或者调用某些其他程序或程序集。

这是程序返回其运行状态的一种方式。

同样,请注意表示没问题,任何非零值表示存在问题。

程序通常会使用不同的非零值来传递更多信息(除了非正常终止之外)。因此,非零退出值然后用作可以识别特定问题的更具体的错误代码。这当然取决于可用代码的含义(通常/希望在文档中)

例如,ls man page底部有这些信息:

  

如果确定则退出状态为0,如果是轻微问题则退出1,如果是严重问题则退出2.

对于Unix / Linux手册页,请查找标题为“退出状态”的部分以获取此信息。

答案 1 :(得分:1)

你只能通过调用return从main函数中退出程序。要从其他任何地方退出程序,可以调用exit(EXIT_SUCCESS)。例如,当用户单击退出按钮时。

答案 2 :(得分:1)

这是系统调用。如果您查看手册页,那么系统调用总是有很好的信息:

http://linux.die.net/man/3/exit

在Linux机器上,您只需在终端中键入man exit即可显示此信息。

答案 3 :(得分:1)

有两种“正常”退出程序的方法:从main()返回,或致电exit()。通常使用exit()来表示失败的信号。但是,如果您不在main(),则必须以某种方式退出。 exit(0)通常用于在不在main()中时终止流程。

main()实际上不是操作系统的特殊功能,只是运行时环境。实际加载的“函数”通常定义为_start()(这由链接器处理,超出了本答案的范围),用汇编语言编写,它只是为环境做准备并调用main() 。从main()返回后,它还会使用exit()的返回值来调用main()