Linux——进程程序替换

替换原理

用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数 以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动 例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。

如上图所示,我们使用exec系列函数后,会将物理内存的数据段和代码段进行替换,而我们的PCB(进程结构体)大致上是不会改变的。

exec系列函数

我们可以使用以下指令来查到exec系列函数的相关信息。

如上图所示,我们发现它有6种类型。其实我只要讲两种基本的,其它的就很好理解了。

我就细讲execl和execv两种。

execl

我们来看看它的参数,第一个参数的意思是你要写一个路径让它知道在哪里,第二个即后面的参数的意思就是你要替换的指令。(如图)

ls指令是在/usr/bin/ls下,后面就是我们想替换的指令,最后面的NULL的意思就是告诉它我们的指令输完了,可以停止读取了的意思。

我们可以来看看结果。

我们可以发现运行这个程序后出现的不是helloworld而是ls指令的结果,说明程序替换成功了。

execv

execv就是只要我们把分开写的指令写到一起就可以了。

如上图所示没有太大的区别。

那么其它的是什么意思呢?

那么有没有什么好的记法呢?其实是有的。

这些函数的返回值是什么意思呢?

注意:exec系列函数调用成功的时候是没有返回值的,只有调用失败的时候会返回-1.

所以如果我们想要进行程序替换的话,exec系列的函数可以帮助我们完成。

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

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

相关文章

RWTH-PHOENIX Weather数据集模型说明和下载

RWTH-PHOENIX Weather 2014 T数据集说明: 德国公共电视台PHOENIX在三年内(2009 年至 2011 年) 录制了配有手语翻译的每日新闻和天气预报节目,并使用注释符号转录了 386 个版本的天气预报。 此外,我们使用自动语音识别和手动清理来转录原始德语语音。因此,该语料库允许训练…

Blast Layer2集成Covalent数据集,提升以太坊dApps拓展能力

Covalent Network(CQT) 作为行业领先的多链索引器,正着手与 Blast 进行一项激动人心的合作。Blast 是一个独特的 Layer2 扩展方案,旨在解决以太坊网络所面临的可扩展性挑战。目前,Covalent Network(CQT&…

期货开户的几个阶段和境界

期市论剑,谁是英雄,每个在期货市场上的人们无时不刻不在努力成为市场上的高手之列,可是期货市场和经济原理是一样的,市场上的人们依水平高低从上至下以金宝塔式排列,利益则成倒倒金字塔排列,也就是塔尖上的…

wkt转geojson

1、js实现,以polygon为例wkt转geojson function processPolygonString2PolygonArray(polygonString, proj) {var geoJson {};if (polygonString.startsWith("MULTIPOLYGON")) {// 多面geoJson["type"] "MultiPolygon";var firstLe…

Redis Geo:解锁地理位置数据的新可能性

Redis Geo 是 Redis 提供的一种地理位置信息存储和查询的功能,通过使用 Geo 数据结构,可以方便地存储地理位置的经纬度坐标,并支持根据位置进行附近位置查询等操作。 Redis Geo 的所有命令详解和示例 GEOADD key longitude latitude member …

ensp中pc机访问不同网络的服务器

拓扑图如下,资源已上传 说明:pc通过2个路由访问server服务器 三条线路分别是192.168.1.0网段,192.168.2.0网段和192.168.3.0网段,在未配置的情况下,pc设备是访问不到server的 具体操作流程 第一;pc设备…

企业微信更改主体的怎么进行线上公证?

企业微信变更主体有什么作用? 做过企业运营的小伙伴都知道,很多时候经常会遇到现有的企业需要注销,切换成新的企业进行经营的情况,但是原来企业申请的企业微信上面却积累了很多客户,肯定不能直接丢弃,所以这…

HCIA-Datacom H12-811 题库补充(3/26)

完整题库及答案解析&#xff0c;请直接扫描上方二维码&#xff0c;持续更新中 管理员想要彻底删除旧的设备配置文件<config.zip>&#xff0c;则下面的命令正确的是() A&#xff1a;reset config.zip B&#xff1a;delete/unreserved config.zip C&#xff1a;clear co…

Docker搭建LNMP环境实战(01):前言

缘起&#xff1a;不久前学习了Docker相关知识&#xff0c;并在Docker环境下学习了LNMP环境的搭建。由于网上的文章大多没有翔实、可行的案例&#xff0c;很多文章都是断章取义&#xff0c;所以&#xff0c;期间踩了太多太多的坑&#xff0c;初学者想要真正顺利地搭建一套环境起…

element ui的下拉选择单选和多选

单选&#xff1a; html代码&#xff1a; <el-form-item label"指令分类: "><el-select v-model"cid" style"width:100%;" placeholder"请选择指令分类" clearable><el-option v-for"item in orderCidList"…

【版本控制】git使用指南

Git 是一个免费、开源的分布式版本控制系统&#xff0c;最初由 Linus Torvalds 于2005年创建。它旨在管理项目的源代码&#xff0c;并提供了跟踪更改、协作开发、版本控制、分支管理等功能。 一、版本控制概念 版本控制系统&#xff08;Version Control System&#xff0c;VC…

基于深度学习的海洋鱼类识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ............................................................ % 对测试集进行分类预测 [Pr…

谷歌AI搜索惊现恶意网站推荐!用户安全再遭威胁?

近日&#xff0c;谷歌推出的新搜索生成体验(SGE)功能引发广泛关注。然而&#xff0c;这一旨在提升搜索体验的AI功能却陷入了争议&#xff0c;有报道称其可能在生成的响应中推广欺诈网站和恶意软件&#xff0c;为用户带来安全风险。 AI-321 | 专注于AI工具分享的网站 AI工具集 …

云电脑火爆出圈,如何选择和使用?--腾讯云、ToDesk云电脑、青椒云使用评测和攻略

前言&#xff1a; Hello大家好&#xff0c;我是Dream。在当下&#xff0c;科技的飞速发展已经深入影响着我们的日常生活&#xff0c;特别是随着物联网的兴起和5G网络的普及&#xff0c;云计算作为一个重要的技术概念也逐渐走进了我们的视野。云计算早已不再是一个陌生的名词&am…

ReactNative项目构建分析与思考之RN组件化

传统RN项目对比 ReactNative项目构建分析与思考之react-native-gradle-plugin ReactNative项目构建分析与思考之native_modules.gradle ReactNative项目构建分析与思考之 cli-config 在之前的文章中&#xff0c;已经对RN的默认项目有了一个详细的分析&#xff0c;下面我们来…

ElasticSearch启动报错:Exception in thread “main“ SettingsException

Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]]; 这个报错说明elasticsearch.yml这个配…

企业如何进行数字化转型?

企业进行数字化转型是一个系统性工程&#xff0c;涉及战略规划、技术应用、组织变革和人才培养等多个方面。以下是实现企业数字化转型的一些关键步骤和要素&#xff1a; 1.战略规划与目标设定&#xff1a; 明确数字化转型的目标和愿景&#xff0c;确保与企业整体战略相一致。 …

Linux系统编程 - 进程异常自动重启

Linux系统编程 - 进程异常自动重启 文章目录 Linux系统编程 - 进程异常自动重启开篇基础概念守护进程僵死进程(zombie) 设计思路源码实现总结 开篇 在Linux平台&#xff0c;自研服务进程通常以守护进程的形式在后台常驻运行。但偶尔也会遇到服务进程异常crash&#xff0c;导致产…

Linux:rpm部署Jenkins(1)

1.获取Jenkins安装包 我这里使用的是centos7系统&#xff0c;ip为&#xff1a;192.168.6.6 2G运存 连接外网 Jenkins需要java环境&#xff0c;java的jdk包你可以去网上下载离线包&#xff0c;或者直接去yum安装&#xff0c;我这里使用的是yum安装 再去获取Jenkins的rpm包…

每日一题——LeetCode1720.解码异或后的数组

方法一 异或运算的性质 encoded[i−1]arr[i−1]⊕arr[i] 在等式两边同时异或arr[i−1] 由于&#xff1a; 一个数异或它自己&#xff0c;结果总是0。 0异或任何数&#xff0c;结果都是那个数本身。 所以等式可以转化为&#xff1a; arr[i]arr[i−1]⊕encoded[i−1] 由于 a…