程式退出時的必要處理之atexit 函式

2021-06-29 11:09:56 字數 551 閱讀 8200

很多時候我們需要在程式退出的時候做一些諸如釋放資源的操作,但程式退出的方式有很多種。比如main()函式執行結束、在程式的某個地方用exit()結束程式、使用者通過ctrl+c或ctrl+break操作來終止程式等等。因此需要有一種與程式退出方式無關的方法來進行程式退出時的必要處理,方法就是用atexit()函式來註冊程式正常終止時要被呼叫的函式

atexit()函式的引數是乙個函式指標,函式指標指向乙個沒有引數也沒有返回值的函式。

atexit()的函式原型是:int atexit (void (*)(void));在乙個程式中最多可以用atexit()註冊32個處理函式,這些處理函式的呼叫順序與其註冊的順序相反,也即最先註冊的最後呼叫,最後註冊的最先呼叫。

#include #include void fn1(void),fn2(void),fn3(void),fn4(void);

int main(void)

void fn1()

void fn2()

void fn3()

void fn4()

讓程式在崩潰時體面的退出之SEH Dump檔案

在我上篇文章 讓程式在崩潰時體面的退出之seh 中講解了seh中try except可以捕捉異常,避免程式的崩潰,並且可以在處理完異常之後,還能決定進該程序如何執行。對於應用程式的使用者來說,並不知道異常的發生。但是對於軟體的開發者來說,雖然避免了程式的崩潰,可是這樣可以讓程式崩潰的缺陷存在於 中,...

讓程式在崩潰時體面的退出之SEH Dump檔案

在我上篇文章 讓程式在崩潰時體面的退出之seh 中講解了seh中try except可以捕捉異常,避免程式的崩潰,並且可以在處理完異常之後,還能決定進該程序如何執行。對於應用程式的使用者來說,並不知道異常的發生。但是對於軟體的開發者來說,雖然避免了程式的崩潰,可是這樣可以讓程式崩潰的缺陷存在於 中,...

Python的訊號處理與程式退出

如果寫的python程式是多執行緒或多程序的,就涉及到程式安全退出的問題。需要先將子程序逐個殺掉後再退出主程序,不然會導致主程序退出 ctrl c 後子程序不退出而繼續執行。需要在啟動多執行緒時將執行緒的 daemon 屬性設定為 true 預設為 false 否則程式會死鎖而無法退出 ctrl c...