C语言中在main函数之后运行的函数

在 Linux 平台上,atexit 函数同样是一个用于注册终止处理函数的库函数,它是 C 标准库 <stdlib.h> 的一部分。atexit 函数允许你注册一个或多个函数,这些函数会在 main 函数执行结束后,或者在调用 exit 函数时,由 exit 自动调用。这些函数通常用于执行一些清理任务,如关闭文件、释放资源等。

atexit 函数的原型如下:

cpp 复制代码
int atexit(void (*func)(void));

它接受一个函数指针作为参数,

该函数指针指向一个没有参数也没有返回值的函数。

注册成功的函数将在程序正常终止时被调用,

调用顺序与它们注册的顺序相反。

在 Linux 平台上使用 atexit 时,需要注意以下几点:

按照 ISO C 的规定,一个进程可以登记多达 32 个函数用于 atexit。

如果同一个函数被多次注册,那么它也会被多次调用。

注册的函数不能带有参数,也不能有返回值。

注册的函数在 exit 被调用时,会按照它们注册的反向顺序执行。

下面是一个简单的 C 语言示例,演示了如何在 Linux 平台上使用 atexit:

cpp 复制代码
#include <stdio.h>  
#include <stdlib.h>  

void cleanup1() {  
	printf("Cleanup 1 executed\n");  
}  

void cleanup2() {  
	printf("Cleanup 2 executed\n");  
}  

int main(int argc,char *argv[]) {  
	// 注册两个清理函数  
	atexit(cleanup1);  
	atexit(cleanup2);  

	printf("Program is exiting\n");  
	return 0;  
}

:/tmp/temp$ gcc test.c

/tmp/temp$ ./a.out

Program is exiting

Cleanup 2 executed

Cleanup 1 executed

相关推荐
listhi52012 小时前
对LeNet-5的matlab实现,识别MINST手写数字集
开发语言·matlab
qq_4335545412 小时前
C++ manacher(求解回文串问题)
开发语言·c++·算法
csbysj202012 小时前
Chart.js 饼图:全面解析与实例教程
开发语言
浩瀚地学12 小时前
【Java】常用API(二)
java·开发语言·经验分享·笔记·学习
程序员小寒12 小时前
从一道前端面试题,谈 JS 对象存储特点和运算符执行顺序
开发语言·前端·javascript·面试
七夜zippoe12 小时前
事件驱动架构:构建高并发松耦合系统的Python实战
开发语言·python·架构·eda·事件驱动
古城小栈12 小时前
Rust Trait 敲黑板
开发语言·rust
FL1717131413 小时前
MATLAB的Sensitivity Analyzer
开发语言·matlab
lly20240614 小时前
jEasyUI 设置排序指南
开发语言
一起努力啊~14 小时前
算法刷题--长度最小的子数组
开发语言·数据结构·算法·leetcode