标签:clean up 自动调用 include ssi 信号 地址 str 多次 进程
对C语言有所了解的人都知道main函数是整个程序的入口,但是其实不然,在内核中可以使用链接器来设置程序的开始地方。当内核使??个exec函数执?C程序时,在调?main函数之前先调??个特殊的启动例程,可执?程序将此例程指定为程序的起始地址。启动例程从内核获取命令?参数和环境变量,然后为调?main函数做好准备。
前面我们关注的是程序开始进入时的调用函数,而atexit函数是一个特殊的函数,它是在正常程序退出时调用的函数,我们把他叫为登记函数
(函数原型:int atexit (void (*)(void))):
?个进程可以登记若?个(具体??验证?下)个函数,这些函数由exit?动调?,这些函数被称为终?处理函数, atexit函数可以登记这些函数。 exit调?终?处理函数的顺序和atexit登记的顺序相反(网上很多说造成顺序相反的原因是参数压栈造成的,参数的压栈是先进后出,和函数的栈帧相同),如果?个函数被多次登记,也会被多次调?。
atexit函数调用时机
以下函数的调用时程序异常或者正常终止:
标签:clean up 自动调用 include ssi 信号 地址 str 多次 进程
原文地址:https://www.cnblogs.com/cthon/p/9196723.html