波奇学Linux:进程替换

news2025/1/20 10:52:33

单进程替换

excel使得能够在文件中运行系统指令

int excel (系统文件地址,系统指令,指令参数,NULL);

成功时无返回值,失败时返回-1

 如图进程成功运行第一个printf后再运行指令,但没有输出第二个printf的内容。本质上发生了程序替换

进程替换原理

1.进程运行时会把mycommand进程加载到物理内存中,同时创建进程的PCB,进程空间,页表等。

2.进程根据页表映射的数据和代码在cpu上运行。

3.运行Excel函数时发生进程替换,加载ls程序的数据和代码到内存中,改变页表映射的数据和代码。

4.程序直接运行ls的代码直到程序结束,不再运行mycommand剩下的代码。

cpu如何得到ls代码的入口地址

linux中形成的可执行程序是有格式的-ELF,可程序有表头,表头有入口地址。

可执行程序加载到内存中会先加载表头

多进程版进程替换

fork出一个子进程再进程替换掉

如图父子进程的pid都保持不变,说明程序替换没有出现出现新进程。

子进程的代码部分发生写时拷贝。

进程替换接口

execl:l表示list,参数是可变参数类型

execlp:p表示环境变量的PATH,参数file表明会从环境变量的PATH中搜索

execlv:v表示参数是指针数组

execle:e表示可以传递环境变量给替换的进程

l和v的对比

l:execl("usr/bin/ls","ls","-a","-l",NULL);

//相当于 把"ls" "-a" "-l" 组装起来"ls -a -l"

v:char* const argv[]={"ls","-a","-l",NULL};

execv("usr/bin/ls",argv);

l和lp比较

execl("usr/bin/ls","ls","-a","-l",NULL);

execlp("ls","-a","-l",NULL);

execve才是系统调用,在man手册中的2中,其他都函数最后都会调用execve

结合前几节中的可变参数选项,我们可以推测,所有的进程都execv启动进程

excel进程替换函数调用自定义的进程

调用C++进程

Makefile同时实现两个程序编译

1.c++代码Linux下后缀有cpp,cc等

2.编译c++代码,用编译器g++

3.用伪目标实现同时编译两个文件

4.Makefile的逻辑是根据(伪)目标文件all的依赖关系找到otherExe和mycommand文件,再找到目标文件为otherExe和mycommand的依赖关系,开始编译。

5.指令make 实际上make all (第一个目标文件)

调用bash的脚本进程

.sh是shell脚本后缀

#! 所有的脚本语言开头都会有这个

user/bin/bash:这是bash解释器的地址

程序替换时,环境变量不会被替换

脚本进程就是文本语言,被解释器解释

实际上python和java也是解释器语言

 不是test.sh运行而是bash程序运行。后面的写法和命令行输入的一致。

运行python脚本

替换进程接收参数选项和环境变量

传递的envp覆盖了原来的环境变量。

putenv()函数添加新的变量到环境变量中

在父进程时可以修改环境变量,或者替换进程时将自定义环境变量和参数选项给函数。

本地shell实现

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

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

相关文章

Jenkins 插件管理指南

目录 常用插件 插件安装 已安装插件 installed plugins 常用插件 Docker Plugin: 这个插件让Jenkins能够与Docker容器平台进行集成。它允许在Jenkins构建过程中创建、管理和销毁Docker容器,为需要Docker化的项目提供了极大的便利性。对于需要在容器中…

Leetcode—1491.去掉最低工资和最高工资后的工资平均值【简单】

2023每日刷题&#xff08;六十八&#xff09; Leetcode—1491.去掉最低工资和最高工资后的工资平均值 实现代码 class Solution { public:double average(vector<int>& salary) {double sum 0;int n salary.size();sort(salary.begin(), salary.end());for(int i…

全部没有问题(三)

C语言 吞空格 一共三种办法&#xff1a; fflush(stdin), while(getchar()!\n), scanf("%*c") p.s visual studio已经移除gets函数了&#xff0c;要换编译器/函数&#xff0c;visual C可以的 #include <stdio.h>int main() {char x[100], y[100], z[100];i…

贪吃蛇(十)贪吃蛇吃食物

上节讲到限制蛇身回头&#xff0c;本节要实现吃食物功能 实现思路 在存储上食物方面可以复用蛇的结构体。初始化食物的时候&#xff0c;我们设置食物的坐标&#xff0c;每次调用这个函数的时候&#xff0c;坐标发生一些规律的变化。另外我们需要扫描食物的函数&#xff0c;这…

数据大模型与低代码开发:赋能技术创新的黄金组合

在当今技术领域&#xff0c;数据大模型和低代码开发已经成为两个重要的趋势。数据大模型借助庞大的数据集和强大的计算能力&#xff0c;助力我们从海量数据中挖掘出有价值的洞见和预测能力。与此同时&#xff0c;低代码开发通过简化开发流程和降低编码需求&#xff0c;使得更多…

淘宝商品评论API:电商行业的战略资源与制胜之道

在电商行业&#xff0c;数据是金。而其中&#xff0c;用户评论数据更是无价之宝。它不仅仅反映了商品的质量和卖家的服务态度&#xff0c;更是消费者在决策时的关键参考。正因如此&#xff0c;获得淘宝商品评论API的重要性不言而喻。 一、数据背后的无尽宝藏 淘宝&#xff0c;…

java的XWPFDocument3.17版本学习

maven依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version> </dependency> 测试类&#xff1a; import org.apache.poi.openxml4j.exceptions.InvalidFormatExcep…

人工智能_机器学习072_SVM支持向量机_人脸识别模型训练_训练时间过长解决办法_数据降维_LFW人脸数据建模与C参数选择---人工智能工作笔记0112

我们先来看一下之前的代码: import numpy as np 导入数学计算库 from sklearn. svm import SVC 导入支持向量机 线性分类器 import matplotlib.pyplot as plt 加载人脸图片以后,我们用pyplot把人脸图片数据展示一下 from sklearn.model_selection import train_test_split 人脸…

3. 结构型模式 - 组合模式

亦称&#xff1a; 对象树、Object Tree、Composite 意图 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能像使用独立对象一样使用它们 问题 如果应用的核心模型能用树状结构表示&#xff0c; 在应用中使用组合模式才有价值。 …

优化模型:MATLAB整数规划

一、整数规划介绍 1.1 整数规划的定义 若规划模型的所有决策变量只能取整数时&#xff0c;称为整数规划。若在线性规划模型中&#xff0c;变量限制为整数&#xff0c;则称为整数线性规划。 1.2 整数规划的分类 整数规划模型大致可分为两类&#xff1a; &#xff08;1&…

机场数据治理系列介绍(1):机场行业数据中台中的数据管理顶层设计方案

目录 1、战略目标与价值 2、组织架构与角色分配 3、数据流程管理 4、数据质量管理 5、数据安全与隐私保护 6、技术平台选择与部署 7、数据服务与API管理 8、数据培训与文化推广 9、持续改进与优化 民航机场行业的数据中台中&#xff0c;有关数据管理顶层设计方案需要结…

C# WPF上位机开发(文件对话框和目录对话框)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 一个上位机软件在处理数据的时候&#xff0c;除了配置文件、数据文件之外&#xff0c;一般还需要使用选择对话框进行文件和目录的选取。如果不这样…

Oracle的学习心得和知识总结(三十一)| ODBC开放式数据库连接概述及应用程序开发

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

不忍学弟学妹受苦受难!!!逐一讲解发动机原理实验报告(1)

固体火箭发动机侵蚀燃烧测试实验 经过了愉快迷糊——哦不瑟瑟发抖——哦不痛不欲生的两天&#xff0c;终于和小伙伴们协力完成了西北工业大学航天学院发动机原理实验报告。具体的实验指导书均可在本人博客资源站下载。 固体火箭发动机侵蚀燃烧测试实验&#xff0c;嗯哼—— 实…

Python脚本打包成exe文件

我们很多时候写好一个python脚本之后&#xff0c;想要发给朋友&#xff0c;可是朋友没有安装python怎么办呢&#xff1f;别急&#xff0c;今天我就教你如何将python脚本打包成exe可执行文件&#xff0c;这样无论你的朋友有没有安装python&#xff0c;都可以运行你写好的程序&am…

ebay倒计时活动攻略,ebay倒计时活动怎么做的?——站斧浏览器

ebay倒计时活动攻略 在ebay上做倒计时活动时&#xff0c;可以参考以下攻略&#xff1a; 制定合理的ebay优惠方案。可以根据消费者的需求和购买习惯&#xff0c;制定不同的优惠方案&#xff0c;例如满减、折扣、赠品等。同时&#xff0c;要保证优惠方案的真实性和公平性&#…

Pushmall共享电商2023年 十二月模块开发优化完成

Pushmall共享电商2023年 十二月模块开发优化完成 十一月模块开发优化完成 智能名片功能开发计划完成 1、搜索查询&#xff1a;个人信息与公司信息标签。搜索查询&#xff1a;对接腾讯位置服务。 2、熟人地图&#xff1a;根据就近资源推荐&#xff0c;多少公里范围的人脉推荐 …

山西电力市场日前价格预测【2023-12-24】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-24&#xff09;山西电力市场全天平均日前电价为324.41元/MWh。其中&#xff0c;最高日前电价为456.41元/MWh&#xff0c;预计出现在18:00。最低日前电价为0.00元/MWh&#xff0c;预计出…

MyBatis-Plus(一):根据指定字段更新或插入

根据指定字段更新或插入 1、概述2、实现方式2、总结 1、概述 MyBatis-Plus中提供了一个saveOrUpdate()方法&#xff0c;默认情况下可以根据主键是否存在进行更新或插入操作&#xff0c;但是实际场景中&#xff0c;根据指定字段进行更新或插入的情况也非常多见&#xff0c;今天…

推荐给前端开发的 5 款 Chrome 扩展

工欲善其事&#xff0c;必先利其器。Chrome 可能是前端开发中使用最多的浏览器。在日常开发中&#xff0c;下列几款 Chrome 扩展也许能让你的开发工作事半功倍 &#x1f680; Vue.js devtools ⚙️ vue 官方专为 vue 应用开发的调试工具。 通过使用它&#xff0c;你可以快速查看…