Linux进程程序替换

news2024/11/20 14:15:50

一、单进程下的程序替换

使用execl进行程序替换,先执行execl前面的代码,在execl处替换成其它进程的代码和数据继续执行,后面的内容就不执行了,因此只打印before

二、程序替换原理

前面我们fork创建子进程,子进程会继承父进程的代码和数据,通过pid_t id进行分流。

而使用execl进行程序替换,可以使子进程执行外部其它写好的程序。

执行到execl时,直接将新的代码和数据替换到物理内存上,然后调整页表映射关系;这一过程中PCB不变,还是原来的进程。

注:父子进程继承时,一般只有数据是写时拷贝,代码为只读。

程序替换因为要修改只读的代码区,OS内部就会进行写时拷贝,这是为了保持进程独立性。

三、多进程版

创建一个子进程进行execl程序替换,替换后子进程不变,退出后被父进程wait回收

execl成功没有返回值,失败有返回值,代码和数据不被替换,继续执行,父进程根据退出码可以得到相应execl失败的信息。

四、exec系列函数接口的使用

注意几点规律:

1、execl

第一个为路径(相对或绝对均可,即找到这个可执行程序)   

带l(list)为可变参数列表,参数一个接一个传入。和命令行一样,指令+选项(找到后怎样做)

2、execlp(PATH) 

会在默认的PATH环境变量中查找(可以省略一些路径)

注:环境变量是全局的,一直被继承,替换时不改变环境变量

3、execv(vector)

参数类型为 字符串指针数组

将myargv这个命令行参数的数组,传递给前面路径程序的int  main(....)

传参在函数栈帧角度就是压栈出栈等一系列操作.....

4、execle(env)

可以传入自己的环境变量env

makefile伪目标(一次make,生成多个可执行程序)

小问题:

exec可以执行系统命令,也可以执行自己写的可执行程序。

“  ”内就是可执行程序的名字,找到路径,直接执行。

exec可以跨语言调用

回到execle:

命令行参数和环境变量也是数据,在进程地址空间中存在,只要不w,就是全局的,一直继承下去

execl中,不传环境变量参数,替换过来的函数也能拿到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1154782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一题(LeetCode)----二分查找(三)

每日一题(LeetCode)----二分查找(三) 1.题目(69. x 的平方根 ) 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 **注意…

安防视频汇聚平台EasyCVR调用播放接口的详细流程

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储…

如何优雅的开发?低代码搭建应用如此轻松

目录 一、前言 二、低代码平台体验简述 三、关于平台 四、场景及用户分析 五、产品分析 1、着重讲一下JNPF的编辑器 2、业务流程 六、最后,说些心里话 一、前言 低代码平台改变了应用交付和管理的模式,大幅缩减交付周期,最终帮助业务…

悠络客荣膺CPSE安博会最高荣誉——金鼎奖

10月24日,第十九届CPSE安博会金鼎奖、百强工程商颁奖典礼暨欢迎晚宴在深圳隆重举行。经过专业评审团队对产品的品质、性能、市场表现、应用价值等多方面因素的权威评估,第十九届CPSE安博会最高荣誉奖“金鼎奖”获奖名单正式揭晓。 悠络客UMind-智慧零售/…

3D虚拟样板间场景制作软件的应用优势及价值

高端家装样板间不仅代表着高品质的家居生活,还是一种生活态度和品味的体现。为了让客户能够更好地体验到高端家装样板间的魅力,许多家装公司和房地产开发商开始尝试使用VR技术来进行样板间的拍摄和展示。通过VR全景拍摄,客户可以在线上进行参…

高效处理大规模数据集的概率型数据结构—— 布隆过滤器 [C++入门]

阅读导航 引言一、布隆过滤器提出二、布隆过滤器的概念三、布隆过滤器的实现1. 插入2. 查找3. 删除(不支持)C模拟实现布隆过滤器 四、布隆过滤器的优缺点✅优点✅缺点 引言 🍔在上一篇文章位图中,我们了解了C中位图的概念和实现。…

动作捕捉系统输出四元数、欧拉角数据

四元数和欧拉角是进行无人机、无人车、机器人等相关实验中经常需要获取的数据。NOKOV度量动作捕捉系统支持实时获取数据,也支持采集导出数据。 一、创建刚体 1、在场地中间放置被测物,这时被测物显示在形影软件界面中。 2、在形影软件界面左上角点击“…

银河集团香港优才计划95分获批案例展示!看看是如何申请的?

银河集团香港优才计划95分获批案例展示!看看是如何申请的? 今天来分享一则银河集团香港优才计划获批案例!客户本科学历非名校、从事业务支援及人力资源行业,优才打分95分,这个条件可能在很多人的印象里,会觉…

C语言实现从键盘输入一个正整数,判断他们是否是回文数,所谓回文数,是指正数和反数都一样例如 123321 是回文数

完整代码&#xff1a; /*从键盘输入一个正整数&#xff0c;判断他们是否是回文数&#xff0c;所谓回文数&#xff0c;是指正数和反数都一样 例如 123321 是回文数*/ #include<stdio.h> //这个数的最大长度 #define N 10 int main(){//length是这个数的长度int num,lengt…

CDN加速技术海外与大陆优劣势对比

内容分发网络&#xff08;CDN&#xff09;是一项广泛应用于网络领域的技术&#xff0c;旨在提高网站和应用程序的性能、可用性和安全性。CDN是一种通过将内容分发到全球各地的服务器来加速数据传输的服务。本文将探讨使用CDN的优势以及国内CDN和海外CDN之间的不同优势和劣势。 …

智能化管理大规模电脑文件的高效方法

在现代社会中&#xff0c;电脑已经成为我们生活和工作中必不可少的工具。随着时间的推移&#xff0c;我们电脑中的文件越来越多&#xff0c;管理起来也变得越来越困难。为了提高工作效率&#xff0c;我们需要学会高效管理电脑文件。下面&#xff0c;我将分享一些在线分享批量智…

Mysql5.7安装配置详细图文教程(msi版本)

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

超级账本区块链Fabric2.4.4版本搭建过程(完整过程)

前提环境:乌班图20.04环境 安装所需要的工具 先配置一下代理源为阿里云代理&#xff1a; sudo apt-get update 更新源 sudo apt-get install ssh 安装远程客户端 sudo apt-get install curl 安装命令行工具 sudo apt-get install git 安装git sudo apt-get install gcc 安装…

C语言之用指针交换两个数

1.指针存放是是地址&#xff0c;所以在用指针交换两个数的时候&#xff0c;需要对指针进行解引用(*p)。 用指针交换两个数&#xff0c;需要知道p1p2与*p1*p2。 p1p1是将p2的值赋值给p1. *p1*p2是将p2指针地址存放的值&#xff0c;赋值给p1指针地址存放的值&#xff0c;即p1地…

YOLOv7改进: AIFI (尺度内特征交互)助力YOLO | YOLO终结者?RT-DETR一探究竟

💡💡💡本文全网首发独家改进: AIFI (尺度内特征交互)助力YOLO ,提升尺度内和尺度间特征交互能力,同时降低多个尺度的特征之间进行注意力运算,计算消耗较大等问题 推荐指数:五星 AIFI | 亲测在多个数据集能够实现涨点 收录: YOLOv7高阶自研专栏介绍: http:…

JSX语法入门

目录 元素与组件 属性与表达式 条件渲染 列表渲染 使用JSX的注意事项 总结 JSX是JavaScript的扩展语法&#xff0c;它允许我们在JavaScript中编写类似HTML的代码。在React中广泛使用JSX来描述用户界面。在本文中&#xff0c;我们将介绍JSX的基础知识&#xff0c;包括元素…

CSDN----Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

库函数sort

1 sort自定义大小cmp bool cmp(Rec a,Rec b)//W1a是否应该排在b前面 { return a.x<b.x;//a小于b就排在前面 // return a>b; }只需在这里改变大于还是小于排序 #include <iostream> #include <algorithm> #include <vector> #include <cti…

脉冲离子风机和普通离子风机有什么区别

脉冲离子风机和普通离子风机都是利用电离空气的原理来净化空气中的微粒和有害气体&#xff0c;但它们的工作原理和性能有所不同。 普通离子风机是通过将电压施加到电极上&#xff0c;使电极周围的空气分子电离&#xff0c;产生负离子&#xff0c;从而吸附空气中的微粒和有害气体…