`
longxj
  • 浏览: 98365 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

exec系列函数的实现

阅读更多

exec系列函数从linux的linux_binfmt链表中,通过依次调用每个结构的load_binary函数来选择合适的运行格式,一旦找到就执行load_binary函数,否则尝试下一个linux_binfmt的load_binary
,直到尝试完所有的linux_binfmt。
load_binary函数:
1.检查128位的magic number,看文件是不是属于这个格式
2.读取文件的header
3.从文件得到dynamic linker的位置
4.检查dynamic linker是否有效
5.调用flush_old_exec()函数,清除被之前计算所使用的所有资源,像内存,页表
6.使用do_mmap()将可执行文件的text,data,bss段映射到进程中
7.如果可执行文件还有其它段,也映射到进程中
8.加载dynamic linker
9.由dynamic linker将程序运行所需要的其它库用mmap()映射到进程中
10.跳到程序的入口出开始执行程序
2009/02/15 日

分享到:
评论

相关推荐

    20120618_启动新进程(fork和exec系列函数实现)1

    1、fork 函数介绍 2、典型使用 fork 的代码片段: 3、示例 1、exec 系列函数介绍 2、头文件: 3、示例

    进程控制 fork函数的使用等

    系统调用fork( ), exec系列函数,exit( ), wait( )的功能和实现过程 使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示...

    fork函数使用

    关于fork函数的介绍,和测试程序,原版fork linux平台

    c语言va函数讲解.

    exec*()系列函数,用于在程序中执 行外部文件(main(int argc, char* argv[]算不算呢,与其说main()也是一个 可变参数函数,倒不如说它是exec*()经过封装后的具备特殊功能和意义的函 数,至少在原理这一级上有很多...

    UNIX期末试卷

    (4)服务器端在接收客户端的配置信息后,使用exec 系列函数完成对IP 地址、掩码、默认网关、DNS修改,并写入相应的配置文件。结果验证:使用ifconfig检查IP地址信息配置的正确性;使用nslookup检查DNS信息的正确性。 ...

    用C/C++实现Linux文件操作命令ls

    用C/C++实现Linux文件操作命令ls,能够显示文件内容,显示文件内容,实现-l、-h、–r、-t、-R等选项的功能。 说明:不能使用system函数或exec系列函数。

    Linux下项目案例: 多媒体广告机的完整代码

    ├─libmad高精度音频解码库源码 ├─Mplayer源码 ├─Tiny4412开发板声卡驱动 └─示例代码 ├─01 mplayer从模式使用示例 ... ├─06 exec系列函数使用示例 └─07 mplayer自动播放示例_模板代码

    《linux编程技术》-实验3.doc

     创建子进程一,在子进程中递归打印/home目录中的内容(用exec系列函数调用第二次实验中的代码完成此功能);  1.子进程结束的时候完成以下功能:  打印字符串“Child process exited!”  打印子进程标识符...

    操作系统实验(3).doc

    掌握系统调用fork( ),exec系列函数(6个),exit( ),wait( ),waitpid( ),getpid( ),getppid( )的功能和实现过程。 3. 编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父...

    Python 70行代码实现简单算式计算器解析

    要求:不使用eval、exec函数。 实现思路:找到当前字符串优先级最高的表达式,在算术运算中,()优先级最高,则取出算式最底层的(),再进行加减乘除运算。对于加减乘除,也要确立一个优先级,可以使用一个运算符列表...

    Linux高性能服务器编程

    12.2.5 往事件多路分发器中注册事件 12.2.6 eventop结构体 12.2.7 event_base结构体 12.2.8 事件循环 第13章 多进程编程 13.1 fork系统调用 13.2 exec系列系统调用 13.3 处理僵尸进程 13.4 管道 13.5 信号...

    ExtJS4中文教程2 开发笔记 chm

    Edit Grid限制编辑 ExtJS 4 DirectStore post参数的变化以及应对方法 ...js函数match、exec、test、search、replace、split使用介绍 技巧:Javascript使用隐藏的new来创建对象 禁止页面全选复制,兼容多种浏览器

    linux网路编程 中文 23M 版

    2.3.8 Makefile 中的函数.............................................. 46 2 . 4 用G D B 调试程序..................................................... 47 2 . 4 . 1编译可调试程序............................

    PHP基础教程 是一个比较有价值的PHP新手教程!

    PHPLIB就是最常用的可以提供一般事务需要的一系列基库。 - 可扩展性 就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不...

    PyQt4 精彩实例分析26个例子

    和人多数操作系统一样, Windows及Linuⅹ都提供了一系列的标准对话框,如文件选择, 字体选择,颜色选择等,这些标准对话框为应用程序提供了一致的观感。Qt对这些标准对 话框都定义了相关的类,这些类让使用者能够很方便地...

    正则表达式

    正则表达式的模式规范是由一系列字符构成的.大多数字符(包括所有字母数字字符)描述的都是按照字面意思进行匹配的字符.这样说来,正则表达式/java/就和 所有包含子串 "java" 的字符串相匹配.虽然正则表达式中的其它...

    自己动手写操作系统(含源代码).part2

    造成这些的根本原因,在于学习者一开始就面对一个完整的操作系统,或者面对前辈们积累了几十年的一系列理论成果。而无论作者多么擅长写作,读者多么聪明,或者代码多么优秀,要一个初学者理清其中的头绪都将是非常...

Global site tag (gtag.js) - Google Analytics