Linux--进程替换

1.什么是进程替换

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

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

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

图解:

2.如何发生进程替换

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

比如:

其中:

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

打印的结果为:

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

3.进程替换的结果

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

其他的exec*系列函数

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

相关推荐
weixin_307779135 小时前
Linux下Docker Compose里运行PostgreSQL数据库故障诊断Shell脚本
linux·运维·数据库·docker·postgresql
AI创界者5 小时前
安全测试环境搭建:在 Kali Linux 中部署与配置开源 WebShell 管理工具 AntSword(蚁剑)
linux·运维·安全
猪头少年不会遇见算法学姐6 小时前
Makefile快速上手笔记
linux·学习
qiu_lovejun9986 小时前
linux安装docker和redis和rabbitmq和nginx和rocketmq和kafka
linux·redis·docker·kafka·rabbitmq·rocketmq
运维大师6 小时前
【Linux运维极简教程】04-进程与服务管理
linux·运维
keke.shengfengpolang6 小时前
自动化考什么证书对就业有帮助?
运维·自动化
javajenius6 小时前
Masslynx 4.1安装包免费下载及详细安装教程
java·服务器·前端·其他
源码学社6 小时前
Spug 3.0 Ubuntu 22.04 Docker 部署文档
linux·ubuntu·docker·windows安装·spug
tebukaopu1486 小时前
ubuntu挂载nfs
linux·运维·ubuntu
雾沉川7 小时前
Netcatty 开源 SSH 客户端完整技术使用教程
运维·开源·ssh