程序的退出方式

2021-08-16 19:18:03 字數 1613 閱讀 7513

程序退出有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 若...