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

相关推荐
wuminyu2 小时前
ZGC染色指针在虚拟线程stackChunkOop上的并发屏障全景分析
java·linux·c语言·jvm·c++
蜗牛互联网2 小时前
Python Agent 工具调用:审批令牌、参数白名单和累计预算
java·开发语言·人工智能·windows·后端·python
Logic1012 小时前
C语言/数据结构组合数学题解:数字好排列计数——质数倍数分类与阶乘取模
c语言·数据结构·算法·组合数学·时间复杂度·排列·取模运算
承渊政道2 小时前
【Python编程—从入门到实践】(让程序记得、恢复并解释失败:Python 文件、异常与JSON系统教程)
开发语言·python·pycharm·json·异常处理
一水鉴天3 小时前
声调韵的序:从古汉语音韵到系统科学语言的场效应推演 20261013(千问)
开发语言·人工智能
郭庆汝3 小时前
(六)MCP+A2A之——Playwright与BrowserUse:让AI学会像人类一样使用浏览器
开发语言·python
涉密IT资质笔记3 小时前
涉密资质投入产出分析模型:时间成本、四块成本构成与 ROI 决策框架
java·开发语言·算法
北风toto3 小时前
KMP 算法详解:从暴力匹配到 O(n+m) 的字符串搜索
java·开发语言·算法
william_yangshun3 小时前
WordCraft 观察:纯 Rust 重写文字处理器,把文档变成可编程对象
开发语言·后端·rust·文档自动化
沫璃染墨3 小时前
《从零入门数据结构与算法(二):线性表详解——从顺序表原理到静态与动态实现》
c语言·数据结构·顺序表