atexit()
是一个标准 C 库函数,它用于注册一个函数(通常称为退出处理程序或终止函数),该函数将在 main()
函数完成或 exit()
被调用时执行。这对于在程序退出时执行一些清理任务(如关闭文件、释放资源或打印一些消息)非常有用。
原型
c
#include <stdlib.h>
int atexit(void (*func)(void));
参数
- func : 指向要注册的函数的指针。这个函数不应该带有参数,并且应该返回
void
。
返回值
- 如果成功,
atexit()
返回0
。 - 如果失败,返回非零值。
示例
以下是一个简单的示例,展示了如何使用 atexit()
:
c
#include <stdio.h>
#include <stdlib.h>
void cleanup_function1() {
printf("Cleanup function 1 called.\n");
}
void cleanup_function2() {
printf("Cleanup function 2 called.\n");
}
int main() {
atexit(cleanup_function1);
atexit(cleanup_function2);
printf("Main function is done!\n");
return 0;
}
当上述程序运行时,输出是:
majn@tiger:~/C_Project/process_project$ ./atexit_demo
Main function is done!
Cleanup function 2 called.
Cleanup function 1 called.
注意两点:
atexit()
注册的函数在程序退出时的执行顺序与它们注册的顺序相反。- 如果多次注册同一函数,那么该函数将被调用多次。
这种退出处理函数在程序正常终止时才会被调用,即通过 return
从 main()
返回或通过 exit()
函数退出。如果程序是通过其他方法(如接收到终止信号)终止的,这些函数可能不会被调用。