Atexit简介
编辑
函数名: atexit
头文件:#include<stdlib.h>
功 能: 注册终止函数(即main执行结束后调用的函数)
用 法: void atexit(void (*func)(
void));
注意:exit调用这些注册函数的顺序与它们 登记时候的顺序相反。同一个函数如若登记多次,则也会被调用多次。
#include <stdlib.h>
#include <stdio.h>
FILE
*fp=NULL;
void
fn1()
{
char
buf[32]=
"atexit"
;
if
(NULL!=fp){
fwrite
(buf,
sizeof
(buf),1,fp);
printf
(
"fwrite *****\n"
);
}
printf
(
"calling fn2*****\n"
);
}
int
main()
{
char
*path=
"./file.txt"
;
atexit
(fn1);
if
(NULL==(fp=
fopen
(path,
"w+"
))){
printf
(
"fp is null *****\n"
);
return
0;
}
//fclose(fp);
printf
(
"calling main *****\n"
);
return
0;
}
yingc@yingc:~/gcyin/test/tmp/csdn$ ls
cond.c condtest
exit
.c filetest filetest.c file.txt libtestlib.a main main.cpp main.o testlib.cpp testlib.h testlib.o
yingc@yingc:~/gcyin/test/tmp/csdn$ cat file.txt
yingc@yingc:~/gcyin/test/tmp/csdn$ ls
cond.c condtest
exit
.c filetest filetest.c file.txt libtestlib.a main main.cpp main.o testlib.cpp testlib.h testlib.o
yingc@yingc:~/gcyin/test/tmp/csdn$ gcc -o
exit
exit
.c
yingc@yingc:~/gcyin/test/tmp/csdn$ ll
total 1172
drwxrwxr-x 2 yingc yingc 4096 6月 25 10:44 ./
drwxrwxr-x 19 yingc yingc 4096 6月 16 16:43 ../
-rw-rw-r-- 1 yingc yingc 1215 5月 30 10:49 cond.c
-rwxrwxr-x 1 yingc yingc 7410 5月 30 10:49 condtest*
-rwxrwxr-x 1 yingc yingc 7389 6月 25 10:44
exit
*
-rw-rw-r-- 1 yingc yingc 856 6月 25 10:44
exit
.c
-rw-r--r-- 1 yingc yingc 12288 6月 25 10:44 .
exit
.c.swp
-rwxrwxr-x 1 yingc yingc 7443 5月 30 14:53 filetest*
-rw-rw-r-- 1 yingc yingc 825 5月 30 14:53 filetest.c
-rw-rw-r-- 1 yingc yingc 0 5月 30 14:49 file.txt
-rw-rw-r-- 1 yingc yingc 2706 5月 29 16:49 libtestlib.a
-rwxrwxr-x 1 yingc yingc 1117061 5月 29 17:13 main*
-rw-rw-r-- 1 yingc yingc 520 5月 28 10:49 main.cpp
-rw-rw-r-- 1 yingc yingc 2176 5月 29 17:13 main.o
-rw-rw-r-- 1 yingc yingc 586 5月 29 16:44 testlib.cpp
-rw-rw-r-- 1 yingc yingc 661 5月 29 16:44 testlib.h
-rw-rw-r-- 1 yingc yingc 2532 5月 29 16:49 testlib.o
yingc@yingc:~/gcyin/test/tmp/csdn$ ./
exit
calling main *****
fwrite
*****
calling fn2*****
yingc@yingc:~/gcyin/test/tmp/csdn$ cat file.txt
atexityingc@yingc:~/gcyin/test/tmp/csdn$ fg