我了解这exit(1)
表示错误,例如:
if (something went wrong)
exit(EXIT_FAILURE);
但是使用的目的是exit(EXIT_SUCCESS);
什么?
处理流程时可能吗?例如对于fork()
?
谢谢
这为调用程序的系统部分(通常是命令外壳)提供了一种检查程序是否正常终止的方法。
编辑 ——开始——
$?
顺便说一句,也可以通过使用shell 变量来查询交互式命令的退出代码。例如,这个失败ls
的命令会产生一个退出代码 value 2
。
$ ls -3 ls: invalid option -- '3' Try `ls --help' for more information. $ echo $? 2
编辑 ——结束——
想象一个调用一系列程序的批处理文件(或 shell 脚本),并且根据每次运行的结果可能会选择一些操作或其他操作。该动作可能包括给用户的简单消息,或调用一些其他程序或程序集。
这是程序返回其运行状态的一种方式。
另外,请注意,零表示没有问题,任何非零值都表示有问题。
程序通常会使用不同的非零值来传递更多信息(不仅仅是非正常终止)。因此,非零退出值将用作可以识别特定问题的更具体的错误代码。这当然取决于可用代码的含义(通常/希望在文档中)
例如,ls 手册页的底部有以下信息:
退出状态为 0 表示正常,1 表示小问题,2 表示严重问题。
对于 Unix/Linux 手册页,查找标题为 EXIT STATUS 的部分以获取此信息。
您只能通过调用 return 从主函数中退出程序。要从其他任何地方退出程序,您可以调用 exit(EXIT_SUCCESS)。例如,当用户单击退出按钮时。
这是一个系统调用。如果您查看手册页,总会有关于系统调用的好信息:
http://linux.die.net/man/3/exit
在 Linux 机器上,您只需man exit
在终端中输入,就会出现此信息。
有两种“正常”退出程序的方式:从返回main()
或调用exit()
。通常exit()
用于并被认为是发出故障信号。但是,如果您不在main()
,您仍然必须以某种方式退出。 exit(0)
通常用于在不在时终止进程main()
。
main()
实际上对操作系统来说并不是一个特殊的功能,只是对运行时环境来说。实际加载的“函数”通常定义为_start()
(由链接器处理,超出此答案的范围),用汇编语言编写,它只是准备环境并调用main()
. 在 from 返回时main()
,它还exit()
使用 from 的返回值调用main()
。