当前位置: 首页 > news >正文

linux-----进程execl簇函数

  1. execl函数族概述
    • 在Linux中,execl函数族用于在一个进程中加载并执行一个新的程序,它会替换当前进程的地址空间(代码段、数据段、堆和栈等)。这个函数族包括execlexeclpexecleexecvexecvpexecvpe,它们的主要功能相似,但在参数传递方式和程序查找路径上有所不同。
    • 这些函数通常在fork创建子进程后使用,子进程通过execl函数族来执行另一个程序,而父进程可以继续执行其他任务或者等待子进程结束。
  2. execl函数详细介绍
    • 函数原型int execl(const char *path, const char *arg,...);
    • 参数说明
      • path:这是要执行的新程序的完整路径名,例如"/bin/ls"。它指定了可执行文件在文件系统中的位置。
      • arg:这是传递给新程序的参数列表,第一个参数arg通常是新程序的文件名(这是一种约定),后面的参数是程序运行时需要的实际参数。参数列表必须以NULL结尾,用于表示参数列表的结束。例如,execl("/bin/ls", "ls", "-l", "/home", NULL);,这里"ls"是程序名,"-l""/home"是传递给ls程序的参数,NULL表示参数结束。
    • 返回值
      • 成功时,execl函数不会返回,因为它已经用新程序替换了当前进程的地址空间。
      • 失败时,函数返回 - 1,并且会设置errno来指示错误原因,比如文件不存在、权限不足等。
  3. execlp函数详细介绍
    • 函数原型int execlp(const char *file, const char *arg,...);
    • 参数说明
      • file:与execl函数的path参数不同,execlpfile参数可以是程序的文件名,它会在环境变量PATH指定的路径中查找可执行文件。例如,如果PATH包含/bin:/usr/bin,并且file"ls",系统会在/bin/usr/bin等目录中查找ls程序。
      • 后面的arg参数和execl函数一样,是传递给新程序的参数列表,以NULL结尾。
    • 返回值:和execl函数相同,成功时不返回,失败时返回 - 1并设置errno
  4. execle函数详细介绍
    • 函数原型int execle(const char *path, const char *arg,..., char *const envp[]);
    • 参数说明
      • path:和execl函数中的path一样,是要执行的新程序的完整路径名。
      • arg:参数列表,以NULL结尾。
      • envp:这是一个指向环境变量数组的指针,用于为新程序设置环境变量。数组的每个元素是一个以NULL结尾的字符串,形式为"VARIABLE=value",例如{"PATH=/bin:/usr/bin", "HOME=/home/user", NULL}。如果不设置这个参数,新程序会继承当前进程的环境变量。
    • 返回值:同execlexeclp函数,成功不返回,失败返回 - 1并设置errno
  5. execv函数详细介绍
    • 函数原型int execv(const char *path, char *const argv[]);
    • 参数说明
      • path:要执行的新程序的完整路径名。
      • argv:这是一个指向字符串数组的指针,用于传递参数给新程序。数组的第一个元素通常是新程序的文件名,后面的元素是实际参数,最后一个元素必须是NULL,用于表示参数结束。这种参数传递方式和execl函数的参数列表类似,但使用数组形式更方便在程序中动态构建参数列表。例如,char *argv[] = {"ls", "-l", "/home", NULL}; execv("/bin/ls", argv);
    • 返回值:成功不返回,失败返回 - 1并设置errno
  6. execvp函数详细介绍
    • 函数原型int execvp(const char *file, char *const argv[]);
    • 参数说明
      • file:可以是程序文件名,会在PATH指定的路径中查找可执行文件。
      • argv:和execv函数一样,是指向参数数组的指针,用于传递参数给新程序。
    • 返回值:同其他execl函数族成员,成功不返回,失败返回 - 1并设置errno
  7. execvpe函数详细介绍
    • 函数原型int execvpe(const char *file, char *const argv[], char *const envp[]);
    • 参数说明
      • file:程序文件名,在PATH路径中查找可执行文件。
      • argv:参数数组指针,用于传递参数。
      • envp:环境变量数组指针,用于设置新程序的环境变量。
    • 返回值:成功不返回,失败返回 - 1并设置errno
  8. 代码示例(以execl为例)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {pid_t pid;pid = fork();if (pid == -1) {perror("fork失败");return 1;} else if (pid == 0) {// 子进程// 使用execl执行/bin/ls -l命令if (execl("/bin/ls", "ls", "-l", NULL) == -1) {perror("execl失败");return 1;}} else {// 父进程// 可以在这里做其他事情,或者等待子进程结束// 这里简单地等待子进程结束wait(NULL);printf("子进程执行完毕。\n");}return 0;
}

在这个示例中,首先通过fork函数创建一个子进程。在子进程中,使用execl函数执行/bin/ls -l命令来列出当前目录下的文件详细信息。如果execl执行成功,子进程的地址空间会被ls程序替换,开始执行ls -l操作。父进程则等待子进程结束后打印一条消息。这个示例展示了execl函数族在进程中加载并执行新程序的基本用法,并且体现了父子进程之间的协作。
在这里插入图片描述

相关文章:

linux-----进程execl簇函数

execl函数族概述 在Linux中&#xff0c;execl函数族用于在一个进程中加载并执行一个新的程序&#xff0c;它会替换当前进程的地址空间&#xff08;代码段、数据段、堆和栈等&#xff09;。这个函数族包括execl、execlp、execle、execv、execvp和execvpe&#xff0c;它们的主要功…...

Vue + ECharts 实现山东地图展示与交互

这篇文章中&#xff0c;我将逐步介绍如何使用 Vue 和 ECharts 实现一个互动式的地图展示组件&#xff0c;其中支持返回上一层地图、点击查看不同城市的详细信息&#xff0c;以及根据数据动态展示不同的统计信息。 效果图&#xff1a;玩转山东地图&#xff1a;用Echarts打造交互…...

【Verilog】UDP用户原语

User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL&#xff08;简称 Verilog &#xff09;是一种硬件描述语言&#xff0c;用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。 Verilog 不仅定义了语法&…...

问题小记-达梦数据库报错“字符串转换出错”处理

最近遇到一个达梦数据库报错“-6111: 字符串转换出错”的问题&#xff0c;这个问题主要是涉及到一条sql语句的执行&#xff0c;在此分享下这个报错的处理过程。 问题表现为&#xff1a;一样的表结构和数据&#xff0c;执行相同的SQL&#xff0c;在Oracle数据库中执行正常&…...

MyBatis入门的详细应用实例

目录 MyBatis第一章&#xff1a;代理Dao方式的CRUD操作1. 代理Dao方式的增删改查 第二章&#xff1a;MyBatis参数详解1. parameterType2. resultType 第三章&#xff1a;SqlMapConfig.xml配置文件1. 定义properties标签的方式管理数据库的信息2. 类型别名定义 MyBatis 第一章&…...

Sequelize ORM sql 语句工具

Sequelize ORM sql 语句工具 初始化配置 Sequelize orm 配置文章落日沉溺于海 在命令行中全局安装 npm i -g sequelize-clisequelize 执行需要匹配 mysql2 对应的依赖&#xff08;安装 mysql2&#xff09; npm i sequelize mysql2初始化项目 sequelize init熟悉初始化项目后…...

增强LabVIEW与PLC通信稳定性

在工业自动化系统中&#xff0c;上位机与PLC之间的通信稳定性至关重要&#xff0c;尤其是在数据采集和控制任务的实时性要求较高的场景中。LabVIEW作为常用的上位机开发平台&#xff0c;通过合理优化通信协议、硬件接口、数据传输方式以及系统容错机制&#xff0c;可以大大提升…...

UDP系统控制器_音量控制、电脑关机、文件打开、PPT演示、任务栏自动隐藏

UDP系统控制器(ShuiYX) 帮助文档 概述 本程序设计用于通过UDP协议接收指令来远程控制计算机的音量、执行特定命令和其他功能。为了确保程序正常工作&#xff0c;请确认防火墙和网络设置允许UDP通信&#xff0c;并且程序启动后会最小化到托盘图标。 命令格式及说明 音量控制…...

NK细胞杀伐功能如何实现?

在人体的免疫系统中&#xff0c;自然杀伐细胞&#xff08;Natural Killer Cells&#xff0c;简称NK细胞&#xff09;是一类完全自然的免疫激活力量。它们为人体提供了快速反应能力&#xff0c;不依赖类元的特定识别力&#xff0c;但能直接寻找和毁灭毒病感染细胞和肿瘤细胞。那…...

Ubuntu搭建ES8集群+加密通讯+https访问

目录 写在前面 一、前期准备 1. 创建用户和用户组 2. 修改limits.conf文件 3. 关闭操作系统swap功能 4. 调整mmap上限 二、安装ES 1.下载ES 2.配置集群间安全访问证书密钥 3.配置elasticsearch.yml 4.修改jvm.options 5.启动ES服务 6.修改密码 7.启用外部ht…...

PC寄存器(Program Counter Register)jvm

在JVM(Java虚拟机)中,PC寄存器(Program Counter Register)扮演着至关重要的角色。以下是对JVM中PC寄存器的详细解释: 一、定义与功能 定义: JVM中的PC寄存器,也被称为程序计数器,是对物理PC寄存器的一种抽象模拟。它用于存储当前线程所执行的字节码指令的地址,即指…...

预览和下载 (pc和微信小程序)

1.微信小程序 预览pdf 或者 图片等 //utils.js 文件//通过接口返回文件链接 打开文档 export default function previewFile({ downLinkUrl, tempFilePath }) {let url "https://" downLinkUrl.replace("http://", "").replace("https:…...

使用 DeepSpeed 微调 OPT 基础语言模型

文章目录 OPT 基础语言模型Using OPT with DeepSpeedmain.py 解析1、导入库和模块2、解析命令行参数3、main 函数3.1 设备与分布式初始化3.2 模型与数据准备3.3 定义评估函数3.4 优化器与学习率调度器设置3.5 使用 deepspeed 进行模型等初始化3.6 训练循环3.7 模型保存 4、dsch…...

BSM和BMS什么区别?

BSM BSM&#xff08;Battery System Manager&#xff09;是指用于管理和控制电动车辆的电池系统的设备&#xff0c;其功能包括监测电池状态、控制充放电过程、保护电池安全等。 BMS BMS&#xff08;Battery Management System&#xff09;是指用于监测、控制和保护电池组的设…...

使用Maven打包javaagent.jar

1、简介 javaagent 是 Java1.5 之后引入的新特性&#xff0c;其主要作用是在class被加载之前对其拦截&#xff0c;以插入我们的字节码。 java1.5 之前使用的是JVMTI&#xff08;jvm tool interface&#xff09;技术来实现对class的拦截&#xff0c;不过这个是用 C 编写的&#…...

R语言混合模型回归GBTM群组轨迹模型绘图可视化研究

全文链接&#xff1a;https://tecdat.cn/?p38581 在回归分析的广袤领域中&#xff0c;面对具有多条未知函数线的复杂数据时&#xff0c;传统方法常常捉襟见肘。混合模型作为一种强有力的分析手段应运而生&#xff0c;其在处理此类复杂情境时展现出独特的优势与潜力&#xff08…...

【毕业设计】A079-基于Java的影院订票系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…...

Vue.js前端框架教程11:Vue监听器watch和watchEffect

文章目录 监听器&#xff08;watchers&#xff09;基本用法deep: trueimmediate: true总结 watchEffect基本用法自动追踪依赖停止监听与 watch 的对比性能优化总结 监听器&#xff08;watchers&#xff09; 在 Vue 中&#xff0c;监听器&#xff08;watchers&#xff09;是一种…...

疾风大模型气象系统:精准预报,引领未来

精准预报,引领未来 在当今快速变化的世界中,天气预报已成为日常生活和社会运行中不可或缺的一部分。从规划日常出行到防范极端天气影响,高精准的气象服务正在重新定义我们的生活方式。而在这一领域,疾风大模型气象系统以其卓越的技术实力和领先的预测能力,正引领气象服务…...

U9应收单拉单生成时找不到退货单

财务说做应收单时抓不到一张退货单。2022年单据。这样的单据让人联想翩翩&#xff0c;胡思乱想。怎么复杂怎么想&#xff0c;钻了牛角尖。分析了1天也没有结果。不知道系统的逻辑&#xff0c;只能用猜想的形式去分析。 问过顾问之后&#xff0c;原来是单据类型错了。从而知道了…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...