程序退出有8種方式:
三種正常的退出方式
1.從main函式退出
2.呼叫exit
3.呼叫_exit_exit
後五種為異常退出方式
4.最後乙個執行緒從啟動歷程返回
5.最後乙個執行緒呼叫pthread_exit
6.呼叫abort
7.接到乙個訊號並終止
8.最後乙個執行緒對取消請求做出響應
先來認識下exit()與_exit()的區別
區別1:清空緩衝區的設定
[root@localhost myexit]# gcc testexit.c
[root@localhost myexit]# ./a.out
[root@localhost myexit]# cat testexit.c
#include
#include
#include
int main()
可以明顯看出呼叫_exit()函式,快取區的內容並沒有被重新整理出來。
區別二:呼叫終止處理程式
atexit()函式:
:可以用來註冊終止處理程式,ansi c規定最多可以註冊32個終止處理程式。
:終止處理程式的呼叫與註冊順序相反
來看下atexit()函式的原型
int atexit(void (*function)(void)); //引數呢是乙個函式指標,返回型別與引數型別都為void
測試下
[root@localhost myexit]# gcc testatexit.c
[root@localhost myexit]# ./a.out
------------
at2at1
[root@localhost myexit]# cat testatexit.c
#include
#include
void at1( void )
void at2( void )
int main()
//呼叫_exit()函式退出
[root@localhost myexit]# gcc testatexit.c
[root@localhost myexit]# ./a.out
------------
return與exit的區別主要來說exit是系統呼叫級別的,代表著乙個程序的結束。它會刪除程序的記憶體空間,同時把錯誤資訊返回給父程序,通常情況,exit(0)表示正常退出,exit(1)和exit(-1)表示程式異常退出,exit(2)表示程式找不到指定的檔案。在整個程式中,只要呼叫exit就結束。
return是語言級別的,代表著呼叫堆疊的返回。如果在main函式中代表著結束本程序,如果不是,則返回上一層呼叫。
程序退出方式
程序退出分為正常退出和異常退出兩種 1 正常退出 a.在main函式中執行return b.呼叫exit函式 c.呼叫 exit函式 2 異常退出 a.呼叫about函式。b.程序受到某個訊號,而該訊號使程式終止。總結 不管是那種退出方式,最終都會執行核心中的同一段 這段 用來關閉程序中所有開啟的檔...
Unix程序退出的方式
程序有5種正常終止以及三種異常終止方式。1 從 main 函式返回 執行return從main函式返回等同於呼叫exit函式。2 呼叫 exit 函式 呼叫exit函式,這個函式由iso c所定義,包括呼叫呼叫所有的被atexit註冊過的退出處理程式和關閉所有的標準i o流。因為iso c不會處理檔...
程序的退出方式以及殭屍程序和孤兒程序
1 正常退出 檢查wait和waitpid所返回的終止狀態的巨集巨集 說明wifexited status 若為正常終止子程序返回的狀態,則為真。對於這種情況可執行wexitstatus status 取子程序傳送給exit exit或 exit引數的低8位 wifsignaled status 若...