C- atexit() 用于注册一个函数

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.

注意两点:

  1. atexit() 注册的函数在程序退出时的执行顺序与它们注册的顺序相反。
  2. 如果多次注册同一函数,那么该函数将被调用多次。

这种退出处理函数在程序正常终止时才会被调用,即通过 returnmain() 返回或通过 exit() 函数退出。如果程序是通过其他方法(如接收到终止信号)终止的,这些函数可能不会被调用。

相关推荐
摇滚侠8 分钟前
Java 零基础全套教程,File 类与 IO 流,笔记 177-178
java·开发语言·笔记
ytttr87326 分钟前
OPC UA 协议栈 C 语言实现
c语言·开发语言·mfc
song50127 分钟前
Ascend C 算子开发:从入门到上手
c语言·开发语言·图像处理·人工智能·分布式·flutter·交互
小a杰.1 小时前
Ascend C编程语言进阶:高性能算子开发技巧
android·c语言·开发语言
全糖可乐气泡水1 小时前
Codex适配国产信创环境安装部署与技术适配全解析
开发语言·git·python·算法·百度
雨落在了我的手上1 小时前
初始java(十):类和对象(⼆)
java·开发语言
LeocenaY1 小时前
搜集的一些测开面试题
开发语言·python
threelab1 小时前
Three.js 加载 3D Tiles 瓦片数据 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
_洋2 小时前
Three.js加载 .obj文件 和 .gltf文件
开发语言·javascript·ecmascript
wjs20242 小时前
Font Awesome 性别图标
开发语言