很多初学者认为,Linux 下C 程序的入口点是main函数,原因是因为他知道在他所写的代码中,main
函数是第一个被调用的。但事实并非如此。操作系统把程序装载到内存中后,在调用你所写的main函数前,
还调用了其它的代码。这些代码并不是用户所写的源码,而是由系统提供的。这些代码的功能是负责准备
main函数执行所需要的运行环境。当运行环境初始化完毕后,操作系统才开始调用用户程序中的main函数。
负责提供初始化main函数执行环境的函数一般被称为入口函数或入口点(Entry Point),入口函数本质上
是用户程序的初始化和结束部分的逻辑延伸。因为每一个用户程序都需要这个功能,所以这些代码就被提炼
了出来,由系统提供,并且存放的程序的运行库中。
在考虑到系统提供的入口函数的前提下,一个程序的运行步骤大致如下:
1)操作系统在创建进程后,把控制权移交到了程序