_Exit()和_exit()之间有什么区别?

时间:2012-01-10 14:30:14

标签: c++

在回答this question时,有些人曾说过使用_Exit()而其他人曾说过使用_exit()。有人可以解释两者之间的差异(如果有的话)和两者的起源吗?

3 个答案:

答案 0 :(得分:5)

直接来自手册页here

  

函数_Exit()等效于_exit()。

虽然在C ++ 11中,它被标准化为std :: _ Exit或std :: quick_exit。根据{{​​3}} Mike Seymour

答案 1 :(得分:4)

_Exit(2)来自C99。 _exit(2)来自POSIX。至少,根据我在这里安装的手册页。

它们完全等效。

答案 2 :(得分:1)

_exit()_Exit()完全相同。要了解exit()_exit()之间的差异,您需要了解函数on_exit(3)atexit(3)。这些函数用于注册在进程正常退出时自动调用的函数,即从main()返回,或通过调用exit()on_exit()atexit()的不同之处仅在于它们允许使用不同的签名注册函数(将这些注册函数视为析构函数(如面向对象编程),这些函数可用于进程)。

exit(),在被调用时尝试执行使用atexit()onexit()注册的所有功能。执行它们后,它会调用_exit()_exit()执行正常的进程终止 - 关闭文件描述符,释放内存,将孤立的子进程重新生成init,等等。将_exit()视为进程用于终止自身的简单系统调用。

由于很多应用程序都不使用atexit()on_exit(),因此_exit()_Exit()exit()的行为相同。