C中的exit()函数 - 如果我们不写这个会怎么样?

时间:2016-11-21 00:42:11

标签: c exit

我见过很多关于这个问题的帖子。许多人说,exit(EXIT_SUCCESS)应成功终止,exit(EXIT_FAILURE)表示终止失败。

  1. 我想问的是:如果我们不调用exit()函数,而是如果我们写return 0return -1怎么办?它有什么不同?
  2. 如果没有成功终止会怎样?它有什么影响?

  3. 有人告诉我们,如果我们调用exit()函数,程序便可移植 - "便携式"在某种意义上是什么?一个函数如何使整个代码可移植?

  4. 有人告诉我,执行会返回父母,如果执行没有返回父母那么会发生什么?

  5. 我的问题似乎很愚蠢,但我需要所有这些问题的答案,以消除我在回归和退出之间的模糊性。

1 个答案:

答案 0 :(得分:2)

  1. 返回从函数返回值。退出将退出您的程序。在main函数中调用时,它们基本相同。实际上,大多数标准的libc _start函数都调用main,然后在main的结果上调用exit。
  2. 没什么,直接的。调用者(通常是你的shell)将获得返回值,并能够从中知道你的程序是否成功。
  3. 我不知道这件事。我不知道你的意思。退出是标准功能,如果您愿意,您可以使用它,或者您可以决定不使用它。就个人而言,我更喜欢只从main返回,只返回其他函数的错误状态,让调用者决定如何处理它。除了程序无法管理的不可恢复的错误之外,编写一个杀死程序的API通常是不好的形式。
  4. 如果执行没有返回到父(它是一个shell或其他程序),它将永远挂起。您的操作系统确保在大多数普通情况下不会发生这种情况。