0

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

if (something went wrong) 

     exit(EXIT_FAILURE);

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

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

谢谢

4

4 回答 4

6

这为调用程序的系统部分(通常是命令外壳)提供了一种检查程序是否正常终止的方法。

编辑 ——开始——

$?顺便说一句,也可以通过使用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 的部分以获取此信息。

于 2012-07-30T17:59:49.883 回答
1

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

于 2012-07-30T18:00:43.330 回答
1

这是一个系统调用。如果您查看手册页,总会有关于系统调用的好信息:

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

在 Linux 机器上,您只需man exit在终端中输入,就会出现此信息。

于 2012-07-30T18:03:13.167 回答
1

有两种“正常”退出程序的方式:从返回main()或调用exit()。通常exit()用于并被认为是发出故障信号。但是,如果您不在main(),您仍然必须以某种方式退出。 exit(0)通常用于在不在时终止进程main()

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

于 2012-07-30T18:03:50.357 回答