对atexit函数的理解

   函数名: atexit

   头文件:#include<stdlib.h>

   功 能: 注册终止函数(即main执行结束后调用的函数)

   用 法: void atexit(void (*func)(void));

   按照ISO C的规定,一个进程可以登记多达32个函数,这些函数将由exit自动调用,通常这32个函数被称为终止处理程序,并调用atexit函数来登记这些函数。

   例:

   运行的结果是:

   用return 0;和exit(0);的结果是一样的。

       我们通常认为C语言的起始函数是main函数,实际上在main函数启动之前,内核会调用一个特殊的启动例程,这个启动例程从内核中取得命令行参数值和环境变量值,为调用main函数做准备。因此对应程序而言main函数并不是起始,但是对应C语言而言,main函数就是入口地址,其他的链接器帮助我们完成,实际上main函数的执行是使用了exec函数,这是一个函数族,这也是内核执行一个程序的唯一方法。 
       atexit函数称为终止处理程序注册程序,参数是一个函数地址,当调用此函数时无须传递任何参数,该函数也没有返回值。注册完成以后,当函数终止是exit()函数会主动的调用前面注册的各个函数,但是exit函数调用这些函数的顺序于这些函数登记的顺序是相反的。
       exit()和_exit()以及_Exit()函数的本质区别是是否立即进入内核。_exit()以及_Exit()函数都是在调用后立即进入内核,而不会执行一些清理处理,但是exit()则会执行一些清理处理,这也是为什么会存在atexit()函数的原因:因为exit()函数需要执行清理处理,需要执行一系列的操作。这些终止处理函数实际上就是完成各种所谓的清除操作的实际执行体。atexit函数的定义也给了程序员一种运用exit执行一些清除操作的方法,比如有一些程序需要额外的操作,具体的清除操作可以采用这种方法对特殊操作进行清除等。
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值