我了解exit(1)
表示错误,例如:
if (something went wrong)
exit(EXIT_FAILURE);
但是使用exit(EXIT_SUCCESS);
的目的是什么?
处理流程时可能吗?例如对于fork()
?
谢谢
答案 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)
答案 3 :(得分:1)
有两种“正常”退出程序的方法:从main()
返回,或致电exit()
。通常使用exit()
来表示失败的信号。但是,如果您不在main()
,则必须以某种方式退出。 exit(0)
通常用于在不在main()
中时终止流程。
main()
实际上不是操作系统的特殊功能,只是运行时环境。实际加载的“函数”通常定义为_start()
(这由链接器处理,超出了本答案的范围),用汇编语言编写,它只是为环境做准备并调用main()
。从main()
返回后,它还会使用exit()
的返回值来调用main()
。