通常认为C语言的起始函数是main()函数,实质上一个程序的启动函数并不一定是main()函数,这个可以采用链接器来设置,但是gcc中
默认main()就是C语言的入口函数,在main函数启动之前,内核会调用一个特殊的启动例程,这个启动例程从内核中取得命令行参数值和环境变量
值,为调用main()函数做好准备。
因此对应程序而言main()函数并不是起始,但是对应C 语言而言,main()函数就是入口地址。
按照ISO C的规定,一个进程可以登记多达32个函数,这些函数将由exit自动调用,通常这32个函数被称为终止处理程序,并调用atexit()函数来
登记这些函数。 (函数的调用顺序与注册的顺序是相反的,通过下面的实例可以看出来)
举例
代码如下:
#include<stdlib.h>
void fun1(void)
{
printf("fun1\n");
}
void fun2(void)
{
printf("fun2\n");
}
void fun3(void)
{
printf("fun3\n");
}
int main()
{
atexit(fun1);
atexit(fun2);
atexit(fun3);
printf("main exit\n");
return 0;
}
本人亲测了一波,果不其然: