(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
任何人都知道嗎?libc.so中exit和_exit有什麼區別?
(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
任何人都知道嗎?libc.so中exit和_exit有什麼區別?
簡單地說,exit
是一個高級函數,您應該調用它來退出進程,它會調用退出處理程序和其他一些高級的清理工具。 _exit
是一個低級清理函數,它被稱爲exit
的最後一步。 exit
將真正終止進程(通過使退出系統調用)。
從glibc的手冊 在http://www.gnu.org/software/libc/manual/html_mono/libc.html(也檢查出的glibc用於詳細信息的源代碼):
25.6.1正常終止
的方法正常終止時,其節目信號是做通過呼叫退出。從main返回等價於調用exit,而main返回的值用作退出的參數。
- Function:無效退出(INT狀態)
exit函數告訴程序做了系統,導致它終止進程。
狀態是程序的退出狀態,它成爲進程終止狀態的一部分。該功能不返回。
正常終止導致以下動作:
在於用所述的atexit或ON_EXIT函數被稱爲在其註冊的相反的順序註冊的功能。該機制允許您的應用程序指定在程序終止時執行的自己的「清理」操作。通常,這用於執行諸如將程序狀態信息保存在文件中,或者解鎖共享數據庫中的鎖。
所有打開的流都關閉,寫出任何緩衝的輸出數據。請參閱關閉流。另外,用tmpfile函數打開的臨時文件被刪除;請參閱臨時文件。
_exit被調用,終止程序。請參閱終止內部消息。
而在節 「終止塔內」:
25.6.5端接內部
的_exit功能是用於通過退出過程終止的原語。它在頭文件unistd.h中聲明。
- Function:無效_exit(INT狀態)
的_exit函數是原語用於使過程與狀態的狀態終止。調用此函數不會執行使用atexit或on_exit註冊的清理函數。