2011-04-07 25 views

回答

3

簡單地說,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註冊的清理函數。