(gdb) info symbol exit
exit in section .text of /lib64/libc.so.6
(gdb) info symbol _exit
_exit in section .text of /lib64/libc.so.6
谁知道呢?
简单地说,exit
是一个高级函数,您应该调用它来退出进程,它调用退出处理程序和其他一些高级清理东西。_exit
是一个低级的清理函数,它是exit
的最后一个步骤。exit
将真正终止进程(通过执行exit系统调用)。
来自glibc手册在http://www.gnu.org/software/libc/manual/html_mono/libc.html(也可以查看glibc的源代码以了解详细信息):
<;Termination internals&;25.6.1正常终止
当进程的程序通过调用exit发出结束信号时,进程正常终止。从main返回相当于调用exit,并且main返回的值被用作退出的参数。
-函数:void exit (int status)
exit函数告诉系统程序已经结束,这导致它终止进程。
status是程序的退出状态,它成为进程终止状态的一部分。这个函数不返回。
正常终止导致以下操作:
使用atexit或on_exit函数注册的函数将按照与注册顺序相反的顺序调用。该机制允许应用程序指定在程序终止时执行的自己的"清理"操作。通常,这被用来做一些事情,比如在文件中保存程序状态信息,或者解锁共享数据库中的锁。
所有打开的流都被关闭,写入任何缓冲的输出数据。参见关闭流。此外,使用tmpfile函数打开的临时文件将被删除;
调用_exit,终止程序。
25.6.5终止机制
_exit函数是用于通过exit终止进程的原语。它在头文件unist .h中声明。
-函数:void _exit (int status)
_exit函数是导致进程以status状态终止的原语。调用此函数不会执行atexit或on_exit注册的清理函数。