在程序退出时自动清理资源-atexit
来源:互联网 发布:演唱会门票制作软件 编辑:程序博客网 时间:2024/05/21 07:14
在程序中经常出现多个需要退出程序的情况,程序退出时应当进行一些清理工作。如果有一个能够提供与程序退出方式无关的方法,来进行程序退出时的必要处理,势必可以简化编程工作。atexit()就是这样一个方法。
atexit()声明如下:
extern "C" int atexit (void (*func)(void)) noexcept;extern "C++" int atexit (void (*func)(void)) noexcept;
atexit的参数是一个无参数函数指针,这个函数将在程序正常退出时自动执行。
有8种方式使进程终止,其中前5种为正常终止,它们是
1:从 main 返回
2:调用 exit
3:调用 _exit 或 _Exit
4:最后一个线程从其启动例程返回
5:最后一个线程调用pthread_exit
异常终止有3种,它们是
6:调用 abort
7:接到一个信号并终止
8:最后一个线程对取消请求做出响应
atexit可以最多支持注册32个函数(不同平台可能不同,但最少32个),这些函数在程序退出时,将按照注册时顺序的逆序依次调用。同一个函数可以注册多次
如果注册函数成功执行,将返回一个非零值,否则返回0。
下面是一个小例子:
#include <stdio.h> /* puts */#include <stdlib.h> /* atexit */void fnExit1 (void){ puts ("Exit function 1.");}void fnExit2 (void){ puts ("Exit function 2.");}int main (){ atexit (fnExit1); atexit (fnExit1); atexit (fnExit2); puts ("Main function."); return 0;}
运行结果如下:
本文同时发布在:吱呀 敬请关注
- 在程序退出时自动清理资源-atexit
- 让软件在退出的时候自动执行函数 -- atexit()
- 程序退出处理函数----atexit()
- 程序退出时的必要处理之atexit()函数
- atexit 在函数正常退出时执行的函数注册
- 程序退出前清理: signal
- [C语言] 函数在退出时干了些什么?atexit函数的使用
- C/C++ 资源自动清理
- 用atexit()处理C/C++程序的退出
- [转]用atexit()处理C/C++程序的退出
- vs2008程序退出时自动清除注册表!
- 自动退出程序
- 使用pthread 线程退出时自动释放资源
- linux线程退出时执行的程序(线程清理处理程序)简单例子
- Android自动清理无用资源工具
- Android自动清理无用资源工具
- Android Studio资源自动清理工具
- 我的一个学生在运维工作中写的自动日志清理脚本程序
- shell 与 sqlplus 交互
- ZOJ 1354 Extended Lights Out(枚举)
- 双向口 与 准双向口 区别
- 计算机是如何启动的?
- 腾讯抄你肿么办
- 在程序退出时自动清理资源-atexit
- 如何使用Nginx配置虚拟服务器和做负载均衡
- Java Socket编程
- 一个空类会生成哪些默认函数
- 最简单的查询表空间的使用量、剩余量的方法
- JavaScript学习小结
- 获取本地IP
- map
- tornado开发学习之1.HelloWorld和它加强版版本