码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2016-10-01 14:56:11      阅读:366      评论:0      收藏:0      [点我收藏+]

标签:

  通常我们认为 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函数调用

标签:

原文地址:http://www.cnblogs.com/frank-yxs/p/5925724.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!