Linux进程程序替换

一、单进程下的程序替换

使用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.hqwc.cn/news/155363.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【陈老板赠书活动 - 16期】- 【快捷学习Spring】

陈老老老板🦸 👨‍💻本文专栏:赠书活动专栏(为大家争取的福利,免费送书) 👨‍💻本文简述:生活就像海洋,只有意志坚强的人,才能到达彼岸。 👨‍&am…

org.springframework.cloud:spring-cloud-starter-openfeign:jar is missing详解

openfeign无法导入的问题 我感觉最近带的好几个新人在搭建springCloud基础框架的时候,会犯一个非常小的错误,导致进度卡住了。 这个错误就是Feign导入的错误: ‘dependencies.dependency.version’ for org.springframework.cloud:spring-c…

Redis代替session实现用户验证

一、Redis代替session实现用户验证。 下图是session的实现登录需要实现的代码模块,虽然可以实现完整功能,但是仍然存在一些问题。 在以往使用session当作用户验证的过程中,会有session共享的问题,每次承担请求的tomcat是不一样…

Vue 路由指南:畅游单页应用的地图(Vue Router 和 <router-view>)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

目标检测算法改进系列之添加EIOU,SIOU,AlphaIOU,FocalEIOU等

YOLOv8添加EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU等 yolov8中box_iou其默认用的是CIoU,其中代码还带有GIoU,DIoU,文件路径:ultralytics/yolo/utils/metrics.py,函数名为:bbox_iou 原始代码 def bbox_i…

AcWing 第127场周赛 构造矩阵

构造题目,考虑去除掉最后一行最后一列先进行考虑,假设除了最后一行和最后一列都已经排好了(你可以随便排),那么分析知最后一个数字由限制以外其他都已经确定了,无解的情况是k为-1 并且n,m的奇偶…

Android Button修改背景颜色及实现科技感效果

目录 效果展示 实现科技感效果 修改Button背景 结语 效果展示 Android Button修改背景颜色及实现科技感效果效果如下: 实现科技感效果 操作方法如下: 想要创建一个富有科技感的按钮样式时,可以使用 Android 的 Shape Drawable 和 Sele…

从歌尔股份三季报中,读懂消费电子的“增程式”复苏

第三季度财报季前夕,消费电子板块可谓利好不断。 9月,苹果、华为纷纷发布新品,大厂高端机型带动购机热潮重现。同时,Meta推出的MR头显Quest3、智能眼镜Ray-Ban等XR新产品也备受消费者期待,大摩预测Quest 3今年出货量将…

机器学习-基本知识

 任务类型 ◼ 有监督学习(Supervised Learning) 每个训练样本x有人为标注的目标t,学习的目标是发现x到t的映射,如分类、回归。 ◼ 无监督学习(Unsupervised Learning) 学习样本没有人为标注,学习的目的是发现数据x本身的分布规律&#xf…

机泵设备如何通过设备健康管理平台实施预测性维护

机泵设备在工业生产中起着至关重要的作用,但长时间运行和频繁使用容易引发各种故障。为了提高机泵设备的可靠性和效率,预测性维护成为一种重要的管理策略。设备健康管理平台作为一种先进的工具,为机泵设备的预测性维护提供了有力支持。本文将…

【C++笔记】C++多态

【C笔记】C多态 一、多态的概念及实现1.1、什么是多态1.2、实现多态的条件1.3、实现继承与接口继承1.4、多态中的析构函数1.5、抽象类 二、多态的实现原理 一、多态的概念及实现 1.1、什么是多态 多态的概念: 在编程语言和类型论中,多态(英…

【Overload游戏引擎细节分析】PBR材质Shader---完结篇

PBR基于物理的渲染可以实现更加真实的效果,其Shader值得分析一下。但PBR需要较多的基础知识,不适合不会OpenGL的朋友。 一、PBR理论 PBR指基于物理的渲染,其理论较多,需要的基础知识也较多,我在这就不再写一遍了&…