退出和_exit libc.so 有什么区别?

  • 本文关键字:区别 so exit libc 退出 exit libc
  • 更新时间 :
  • 英文 :

(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的源代码以了解详细信息):

25.6.1正常终止

当进程的程序通过调用exit发出结束信号时,进程正常终止。从main返回相当于调用exit,并且main返回的值被用作退出的参数。

-函数:void exit (int status)

exit函数告诉系统程序已经结束,这导致它终止进程。

status是程序的退出状态,它成为进程终止状态的一部分。这个函数不返回。

正常终止导致以下操作:

使用atexit或on_exit函数注册的函数将按照与注册顺序相反的顺序调用。该机制允许应用程序指定在程序终止时执行的自己的"清理"操作。通常,这被用来做一些事情,比如在文件中保存程序状态信息,或者解锁共享数据库中的锁。

所有打开的流都被关闭,写入任何缓冲的输出数据。参见关闭流。此外,使用tmpfile函数打开的临时文件将被删除;

调用

_exit,终止程序。

<;Termination internals&;

25.6.5终止机制

_exit函数是用于通过exit终止进程的原语。它在头文件unist .h中声明。

-函数:void _exit (int status)

_exit函数是导致进程以status状态终止的原语。调用此函数不会执行atexit或on_exit注册的清理函数。

相关内容

  • 没有找到相关文章

最新更新