进程环境详解---main函数调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程环境详解---main函数调用相关的知识,希望对你有一定的参考价值。

  通常我们认为 main 函数是整个程序的入口,当然这也仅仅是我们的认为,实际上整个可执行文件的入口点并不是 main 函数,而是一个名为 _start 的标号。这一点在笔记 “ARM裸机->关于链接脚本中程序入口”中提到了。
 
  在ARM裸机中,我们编写的 c 程序中也会有 main 函数,但是我们是会在 start.S 这个文件中去调用 main 函数,从而进入到 c 语言环境中,而这个 start.S 我们称为启动代码。在start.S中我们会做各种初始化工作,为 c 语言程序的运行提供环境。
 
  类似的,在操作系统下运行程序实际上是由 exec 函数来运行我们的可执行文件(这是因为我们的进程都是由父进程(shell进程)创建而来,在子进程中使用exec函数来让子进程执行我们的程序),而可执行文件的真正入口应该是启动代码,这个启动代码会调用 main 函数,并且会从内核中获取命令行参数和环境变量,为 main 函数做好准备。当进程在 main 函数中返回到启动代码中时,启动代码会立即结束进程。
  从这里可以看出,main 函数的参数是启动代码传过去的,main 函数返回也是返回给启动代码。
 

以上是关于进程环境详解---main函数调用的主要内容,如果未能解决你的问题,请参考以下文章

第七章:进程环境

Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)

Linux-进程描述之进程环境

进程环境详解---堆分配mallocfree函数详解

C7 : 进程环境

Unix环境高级编程进程环境