一、程序的开始和结束
1、main 函数由谁来调用?
(1)裸机阶段
我们在裸机的时候,会有一段汇编用作引导代码。提前配置好C语言的编程环境。
(2)操作系统阶段
编译器在编译的时候,帮我们添加了引导代码,准确的说是在链接的时候,由链接器将编译器中准备好的引导代码给连接进去。
(3)运行程序时候的加载器(./a.out 执行我们可执行程序的时候)
加载器是操作系统中的程序,当我们去执行一个程序时(譬如./a.out,譬如代码中用exec族函数来运行)加载器负责将这个程序加载到内存中去执行这个程序。
总结:编译链接时:链接器 程序运行时:加载器
(4)argc 和 argv 的传参与 exec族函数 有关。
2、程序如何结束
(1)正常结束