首页 > 代码库 > 进程环境详解(一)---main函数调用
进程环境详解(一)---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函数调用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。