1. 程式人生 > >程式退出時的必要處理之atexit()函式

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

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

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

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

 

#include <stdlib.h>
#include <stdio.h>
void fn1(void),fn2(void),fn3(void),fn4(void);
int main(void)
{
	atexit(fn1);
	atexit(fn2);
	atexit(fn3);
	atexit(fn4);
	printf("This is executed first!\n");
	system("pause");
	return 0;
}

void fn1()
{
	printf(" 1111!\n");
}
void fn2()
{
	printf(" 2222");
}
void fn3()
{
	printf(" 3333");
}
void fn4()
{
	printf("4444");
}