Linux--进程替换

1.什么是进程替换

在fork函数之后,父子进程各自执行代码的一部分,但是如果子进程想要执行一份全新的程序呢?

通过进程替换来完成,进程替换就是父子进程代码发生写时拷贝,子进程执行自己的功能。

程序替换就是通过特定的接口,加载磁盘上的程序,替换子进程原有的程序,加载到调用进程的地址空间中。这就是进程替换!!!

图解:

2.如何发生进程替换

1.不创建子进程,直接调用系统接口:

比如:

其中:

execl(const char* path,const char* arg,.... ),以NULL结尾。path为找到路径,arg为指令,可以传入多个参数,最后一定要以NULL结尾。

打印的结果为:

所以:exec*系列函数执行的结果为替换原来的进程,执行成功后,会将原来的代码和数据进行替换,包括已经执行的和没有执行的。一旦调用成功,有序所有的代码都将不再执行。且exec*函数不需要返回值,不用进行函数返回值的判定。因为exec*函数在执行成功后,将原来所有的代码全部替换,包括它自己。

3.进程替换的结果

在加载新程序之前,父子进程一般为代码共享,数据写时拷贝,但有可能代码和数据同时发生写时拷贝。

其他的exec*系列函数

综上所述:l代表以列表形式展现,p表示以绝对路径,v代表数组的形式。

相关推荐
雯宝2 小时前
mnt_init 函数
linux
律宏阔8 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔8 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴8 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千8 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei378 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei378 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei378 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
judezh8 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
GeW8 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux