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

相关推荐
似水এ᭄往昔2 小时前
【C++】--模板进阶
开发语言·c++
yue0083 小时前
C# 求取整数的阶乘
java·开发语言·c#
曹绍华3 小时前
android 线程loop
android·java·开发语言
树在风中摇曳3 小时前
C语言动态内存管理:从基础到进阶的完整解析
c语言·开发语言·算法
mjhcsp3 小时前
C++ 高精度计算:突破数据类型限制的实现与应用
开发语言·c++·算法·高精度
lixinnnn.3 小时前
C++: map和set
开发语言·c++
郝学胜-神的一滴4 小时前
Qt QPushButton 样式完全指南:从基础到高级实现
linux·开发语言·c++·qt·程序人生
沐知全栈开发4 小时前
R MySQL 连接
开发语言
tryxr4 小时前
变量捕获相关内容
java·开发语言·jvm
百锦再4 小时前
大型省级政务平台采用金仓数据库(KingbaseES)
开发语言·数据库·后端·rust·eclipse