作为对this question的回答,一些人说使用_Exit(),另一些人说使用_exit()。有人能解释一下两者之间的区别(如果有的话),以及两者的起源吗?
发布于 2012-01-10 22:35:20
发布于 2012-01-10 22:34:08
_Exit(2)来自C99。_exit(2)来自POSIX。至少,根据我在这里安装的手册页。
它们是完全等价的。
发布于 2017-03-26 03:48:56
_exit()和_Exit()是完全相同的。要理解exit()和_exit()之间的区别,您需要了解函数on_exit(3)和atexit(3)。这些函数用于注册在进程正常退出时自动调用的函数,即通过从main()返回或通过对exit()的调用。on_exit()和atexit()的不同之处只在于它们允许使用不同的签名注册函数(可以将这些注册的函数视为进程的析构函数(就像在面向对象编程中一样))。
exit()在被调用时会尝试执行使用atexit()或onexit()注册的所有函数。在执行它们时,它调用_exit()。_exit()完成了正常的进程终止工作--关闭文件描述符,释放内存,将孤立的孩子重新设置为初始化的父母,等等。可以将_exit()看作是进程用来终止自身的基本系统调用。
由于大量应用程序都不使用atexit()或on_exit(),因此_exit()、_Exit()和exit()的行为是相同的。
https://stackoverflow.com/questions/8804853
复制相似问题