在回答this question时,有些人曾说过使用_Exit()而其他人曾说过使用_exit()。有人可以解释两者之间的差异(如果有的话)和两者的起源吗?
答案 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()
的行为相同。