atexit 註冊終止函式

2021-07-27 06:01:37 字數 868 閱讀 8692

註冊終止函式(main執行結束後呼叫的函式)

void atexit(void (*func)(void))

乙個程序可以登記多達32個函式,這些函式將由exit自動呼叫

驗證atexit函式呼叫註冊函式的順序:

#include

.h>

#include

.h>

void fun1()

void fun2()

void fun3()

void fun4()

int main()

執行結果為:等待3秒後輸出「run main」輸出「run fun4\n run fun3\n

run fun2\n run fun1」

過程分析:

atexit函式先註冊四個fun 函式,然後等待3秒再列印「run main」

(如果main函式中輸出行不加換行\n,則main函式要輸出的內容會先放到標

準輸出緩衝區中,當main 中呼叫exit函式時會做一些資深清理工作同時重新整理

標準輸出緩衝區的內容)

當執行到exit(0)時,exit會自動呼叫這些已經註冊過的函式,但是由於壓

棧過程中先入後出的原則,所以先註冊的函式最後執行。

exit呼叫這些註冊函式的順序與它們等級時候的順序相反

exit函式執行時首先會執行由atexit函式登記的函式,然後會做一些自身清理

工作同時重新整理所有輸出流,關閉所有開啟的流並且關閉通過標準i/o函式tmpfile

()建立的臨時檔案exit函式用於在程式執行時隨時結束程式,引數state是

返回給作業系統,0表示程式正常結束,非0表示程式非正常結束。

atexit 註冊終止函式和t許可權

1.atexit 函式 atexit 註冊終止函式,函式註冊的函式應為不接受任何引數的void函式,exit 呼叫函式的順序與函式註冊的順序正好相反。1 include 2 include3 void fun1 4 7 void fun2 8 11 void fun3 12 15 int main ...

atexit()函式呼叫註冊的順序

按照iso c的規定,乙個程序可以登記至少32個函式,這些函式將由exit自動呼叫。乙個程序可以登記若干個函式,這些函式由 exit自 動呼叫,這些函式被稱為終止處理函式,atexit 函式可以登記這些 函式。exit 呼叫終止處理函式的順 序和atexit 登記的順序相反,如果乙個函式被多次登記,...

atexit函式詳解 登記函式和終止處理函式

對c語言有所了解的人都知道main函式是整個程式的入口,但是其實不然,在核心中可以使用鏈結器來設定程式的開始地方。當核心使 個exec函式執 c程式時,在調 main函式之前先調 個特殊的啟動例程,可執 程式將此例程指定為程式的起始位址。啟動例程從核心獲取命令 引數和環境變數,然後為調 main函式...