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 日
分享到:
相关推荐
本文将深入探讨两个重要的函数,`fork()`和`exec()`系列函数,它们在启动新进程时起着至关重要的作用。 **一、复制进程映像:fork()函数** `fork()`函数是Unix和类Unix系统(如Linux)中用于创建新进程的关键系统...
`exec`系列函数是用于替换当前进程映像的关键函数,使得进程能够执行新的程序。本文将深入解析`exec`系列函数的应用,结合提供的代码实例,帮助理解其工作原理和使用方法。 `exec`系列函数包括`execl`、`execle`、`...
exec系列函数(如execl)用于在当前进程中替换执行另一个程序。在这个实验中,子进程使用execl调用/bin/sh,这意味着子进程的上下文被shell程序替换,从而执行shell命令。如果成功,exec调用不会返回,因此在execl...
当`exec`系列函数成功执行时,调用它的进程会被新的程序替代,原进程的内存空间被新程序占用,而原来的程序代码和数据则被替换。 要理解这些示例代码的工作原理,你需要对C语言和Linux系统调用有一定的了解。`execl...
关于fork函数的介绍,和测试程序,原版fork linux平台
如果`exec`系列函数执行成功,那么当前进程将被新的程序替换,不会继续执行后面的代码。在上述示例中,如果`execve`成功,"child id done"不会被打印出来,因为进程已经被新程序替换。如果`exec`失败,它会返回一个...
接着是`exec()`系列函数,如`execl()`, `execv()`, `execle()`, `execvp()`等,它们用于在已经存在的进程空间中加载并执行新的程序。`exec`家族的函数并不会创建新的进程,而是替换当前进程的内存映像,使其运行新的...
6. `execve(const char *path, char *const argv[], char *const envp[])`:该函数是系统调用,其他五个函数都是基于这个函数实现的。 exec函数族的使用 当我们使用exec函数族时,需要注意以下几点: * exec函数...
NX二次开发UF_DBC_MLD_exec_command 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业...
在Unix操作系统环境中,程序间的交互和控制是通过各种系统调用和工具来完成的,其中`execl`系列函数(包括`execl`, `execlp`, `execle`, `execv`, `execvp`, `execve`)是用于执行新程序的关键接口。本文将深入探讨...
此外,exec系列函数在C语言中用于执行外部文件,它们也涉及到可变参数的概念。值得注意的是,main()函数虽然不是典型的va函数,但其参数列表中包含了命令行参数的个数和指针,它也是与可变参数相关的函数。 可变...
5. 在子进程中调用 `exec` 系列函数执行命令。 6. 在父进程中,使用 `read()` 从管道读取数据,直到子进程结束。 7. 最后,使用 `pclose()` 类似的函数等待子进程结束并关闭管道。 在 `fork` 之后,为了提高安全性...
在UNIX和Linux操作系统中,进程创建和控制是通过一系列系统调用来实现的,其中最常见的是`fork`、`exec`系列以及`system`和`popen`函数。这些调用各自有不同的特性和用途,理解它们的区别对于进行系统级编程至关重要...
### 知识点总结 #### 1. 制作ramdisk及使用df命令显示相关信息 - **知识点**:本题考查学生对RAM Disk... - 服务器端接收到信息后,使用exec系列函数修改网络配置文件。 - 使用`ifconfig`和`nslookup`验证配置结果。
在Linux操作系统中,`exec`系列函数是一组用于替换当前进程映像的系统调用。这些函数允许程序在不创建新进程的情况下加载并执行新的可执行文件,从而改变进程的行为。`06_exec_linux_源码`这个压缩包显然包含了多个...
在Node.js中,通常使用内置的`child_process`模块来执行外部命令,但`native-exec`模块则提供了更直接的方式来访问POSIX(可移植操作系统接口)的`exec*`函数系列,为开发者提供了更为底层的控制权。 POSIX `exec`...
1. **execl()**: 此函数接受一个路径和一系列参数,以变参列表的形式。最后一个参数必须是`NULL`。例如,`execl("/bin/ls", "ls", "-a", NULL);` 2. **execlp()**: 类似于`execl()`,但它会在PATH环境变量指定的...
7. **系统调用**:unistd.h头文件中的函数,如fork创建子进程,exec系列函数用于执行新的程序,wait等待子进程结束,pipe和fifo实现进程间通信。 8. **线程与同步**:pthread库提供线程创建(pthread_create)、...
例如,`fork`函数用于创建子进程,`exec`系列函数用于替换子进程的执行映像,`pipe`和`socket`用于进程间通信,`open`和`read`用于文件操作。 ```cpp #include #include #include int main() { int fd[2]; ...
总的来说,`curl_multi`系列函数在PHP中用于并发执行多个cURL请求,通过合理的使用`curl_multi_init`、`curl_multi_add_handle`、`curl_multi_exec`、`curl_multi_getcontent`、`curl_multi_remove_handle`、`curl_...