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

进程替换函数组介绍exec*

目录

前述

execl

execlp

execle

execv

execvp

 execvpe


前述

介绍后缀的意义:

l (list):表示参数采用列表。

v(vector):参数同数组表示。

p(path):自动搜索环境变量(路径+程序名=>程序名)。

e(env):手动维护环境变量。

execl

int execl(const char *path, const char *arg, ...);

path:路径+程序名字的字符串

arg:类似控制台输入 这里arg可以有多个必须以NULL结尾

调用ls指令
execl("/usr/bin/ls", "ls","-a","-l",NULL);

execlp

int execlp(const char *file, const char *arg, ...);

file:自动在环境变量寻找路径,只需要传入程序名

arg:类似控制台输入 这里arg可以有多个必须以NULL结尾

调用ls指令
execlp("ls"/*file*/,"ls","-a","-l",NULL);

execle

int execle(const char *path, const char *arg,..., char * const envp[]);

path:路径+程序名字的字符串

arg:  类似控制台输入 这里arg可以有多个必须以NULL结尾

env:  手动维护环境变量。

调用ls指令
char*env[]={"PATH=/usr/bin/ls",NULL};
execlp("/usr/bin/ls", "ls","-a","-l",NULL,env);

execv

int execv(const char *path, char *const argv[]);

path:路径+程序名字的字符串

argv:使用数组argv代替输入多个arg参数

调用ls指令
char*argv[]={"ls","-a","-l",NULL};
execv("/usr/bin/ls",argv);

execvp

int execvp(const char *file, char *const argv[]);

file:自动在环境变量寻找路径,只需要传入程序名

argv:使用数组argv代替输入多个arg参数

调用ls指令
char*argv[]={"ls","-a","-l",NULL};
execvp("ls",argv);

 execvpe

int execvp(const char *file, char *const argv[]);

file:自动在环境变量寻找路径,只需要传入程序名

argv:使用数组argv代替输入多个arg参数

env:  手动维护环境变量。

调用ls指令
char*env[]={"PATH=/usr/bin/ls",NULL};
execvpe("ls", "ls","-a","-l",NULL,env);

execve(系统函数)==execvpe

 int execve(const char *filename, char *const argv[],char *const envp[]);

file:自动在环境变量寻找路径,只需要传入程序名

argv:使用数组argv代替输入多个arg参数

env:  手动维护环境变量。

这个接口是系统接口函数,我们一般都是用其他接口函数,其实这些进程替换函数是基于execve为底层的上层封装函数。


各关系关系图谱

 其实,其他进程替换函数都是基于execve(系统函数)的上层封装函数。

相关文章:

进程替换函数组介绍exec*

目录 前述 execl execlp execle execv execvp execvpe 前述 介绍后缀的意义: l (list):表示参数采用列表。 v(vector):参数同数组表示。 p(path):自…...

欧科云链OKLink:2023年4月安全事件盘点

一、基本信息 2023年4月安全事件共造约6000万美金的损失,与上个月相比,损失金额有所降落,但安全事件数量依旧不减。其中,Yearn Finance因参数配置错误,导致了1000多万美金的损失。同时,有一些已经出现过的…...

KubeVirt备份与还原方案【翻译】

KubeVirt备份与还原方案【翻译】 ref:https://github.com/kubevirt/kubevirt/blob/main/docs/backup-restore-integration.md 备份 为所有必需的k8s资源构建依赖关系图冻结应用程序pvc数据快照解冻应用程序将所有必需的k8s资源定义拷贝到一个共享的存储位置(可选…...

使用PyQt5设计一款简单的计算器

目录 一、环境配置: 二、代码实现 三、主程序 四、总结 本文使用PyQt5设计一款简单的计算器,可以通过界面交互实现加减乘除的功能,希望能够给初学者一些帮助。主要涉及的知识点有类的定义与初始化、类的成员函数、pyqt5的信号与槽函数等。…...

Htop使用说明

目录 引言 什么是htop htop安装 htop界面介绍 htop功能介绍 引言 我们使用服务器的时候常常需要关注下自己的程序资源占用情况,htop就是一种互动式的进程查查看器,整齐用下来感觉比top的逼格高,造作可视化都更方便些,我觉得还…...

PostgreSQL Linux安装

安装依赖: sudo yum -y install readline-devel zlib-devel 安装Postgres: ssh hadoophadoop001 #下载Postgres wget https://ftp.postgresql.org/pub/source/v14.2/postgresql-14.2.tar.gz tar -zxvf postgresql-14.2.tar.gz -C /data #编译前准备 /dat…...

亚商投资顾问 早餐FM/0509车辆电动化

01/亚商投资顾问 早间导读 1.上交所拟于5月11日举办“发现央企投资价值,促进央企估值回归”交流会 2.监管部门十方面举措加强房地产经纪行业管理 3.广东:推动城市公共服务及货运配送车辆电动化替代 4.昆山两楼盘因大幅降价被暂停网签:降幅…...

AI绘画天花板——Midjourney注册使用保姆级教程(5月5日验证有效)

大家好,我是可夫小子,关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加我,备注:aigc,拉你进群。 现在市面上AI绘图大概有三大阵营:Midjourney、Stable Diffusion,还有一个就是OpenAI实…...

学习笔记(2)项目结构描述 - manifest.json和pages.json

目录 1,manifest.json2,pages.json2.1,pages2.2,globalStyle2.3,tabBar 1,manifest.json 官方详情 uni-app 的 appid 由 DCloud 云端分配,主要用于 DCloud 相关的云服务,请勿自行修…...

vector、deque、list相关知识点

vector erase返回迭代器指向删除元素后的元素insert返回迭代器指插入的元素reserve只给容器底层开指定大小内存空间,并不添加新元素 deque 底层数据结构 动态开辟的二维数组,一维数组从2开始,以2倍方式扩容,每次扩容和&#x…...

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比 目录 多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 多维时序 …...

设计模式——适配器模式(类适配器、对象适配器)

是什么? 我们平时的有线耳机接口分为USB的和Type-C的接口,但是手机的耳机插口却只有一个,像华为的耳机插口现在基本都是Type-c的,那如果我们现在只有USB接口的耳机怎么办呢,这个时候就需要使用到一个转换器&#xff0c…...

iOS开发多target

场景 背景:设想一下有一个场景,一个业务分为多种身份,他们大部分功能是相同的,但是也有自己的差异性。这种情况,想要构建出不同身份的APP。你会怎么做??? 当然,你可以拷贝一份代码出来,给项目重新命名。这样做的好处是,他们互相不会冲突,不用去关心是否有逻辑的冲…...

100种思维模型之每日评估思维模型-58

曾子曰:吾日三省吾省,为人谋而不忠乎?与朋友交不信乎?传不习乎? 曾国藩,坚持每日写复盘日记,最后他用自己的实践经历向我们证明:一个智商很平庸、出身很普通且有着各种毛病的人&…...

libreoffice api

libreOffice API是用于访问libreOffice的编程接口。可以使用libreOffice API创建、打开、修改和打印libreOffice文档。 LibreOffice API支持Basic、Java、C/C、Javascript、Python语言。 这是通过一种称为通用网络对象 (Universal Network Objects, UNO) 的技术实现的&#xff…...

全网最火,Web自动化测试驱动模型详全,一语点通超实用...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试模型&a…...

如何写软件测试简历项目经验,靠这个面试都要赶场

一、前言:浅谈面试 面试是我们进入一个公司的门槛,通过了面试才能进入公司,你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试,得到公司的认可呢?面试软件测试要注意哪些问题呢?下面和笔者一起来看看吧。这里分享一…...

【Linux】Linux下安装Mysql(图文解说详细版)

文章目录 前言第一步,进到opt文件夹下面,为什么?因为opt文件夹相当于Windows下的D://software第二步,用yum安装第三步,设置mysql的相关配置第四步,设置远程连接。第五步,更改mysql的语言第六步&…...

Cookie和Session的API、登录页面

目录 一、Cookie 和 Session 1、HttpServletRequest 类中的相关方法 2、HttpServletResponse 类中的相关方法 3、HttpSession 类中的相关方法 4、Cookie 类中的相关方法 二、网页登录 1、约定前后端交互接口 2、编写一个简单的登录页面 3、编写一个Servlet 来处理这个…...

C++数据结构:手撕红黑树

目录 一. 红黑树的概念及结构 二. 红黑树节点的定义 三. 红黑树节点的插入 3.1 初步查找插入节点的位置并插入节点 3.2 红黑树结构的调整 3.3 红黑树节点插入完整版代码 四. 红黑树的结构检查 4.1 检查是否为搜索树 4.2 检查节点颜色是否满足要求 附录:红黑…...

基于 SOFAJRaft + Spring Boot 构建高可用 KV 存储集群(完整源码)

基于 SOFAJRaft + Spring Boot 构建高可用 KV 存储集群(完整源码) 引言 在分布式系统中,一致性 是核心难题。Raft 是比 Paxos 更易于理解的共识算法,而 SOFAJRaft 是蚂蚁集团开源的 Java 高性能 Raft 实现。 本文带你从零构建一个 3 节点高可用 KV 存储集群,包含完整源码、…...

北京欧雷新宇助力重庆机电工程高级技工学校建成“动捕+虚拟拍摄”实训基地,赋能影视动漫人才培养

项目名称:重庆机电工程高级技工学校“计算机动画与制作实训基地”项目 地点:重庆市 应用专业:影视动漫设计与制作专业 项目概述: 近日,北京欧雷新宇动画科技有限公司作为核心产品与技术提供商并承担整体实施的“计算机动画与…...

如何5分钟部署AI斗地主助手:从零开始打造你的智能游戏伙伴

如何5分钟部署AI斗地主助手:从零开始打造你的智能游戏伙伴 【免费下载链接】DouZero_For_HappyDouDiZhu 基于DouZero定制AI实战欢乐斗地主 项目地址: https://gitcode.com/gh_mirrors/do/DouZero_For_HappyDouDiZhu 还在为斗地主游戏中的决策烦恼吗&#xff…...

别再新建模型了!手把手教你用AVL Cruise自带实例,5分钟搞定纯电动车仿真

别再新建模型了!5分钟玩转AVL Cruise自带实例的电动车仿真秘籍 刚接触AVL Cruise的新手工程师们,你们是否经常陷入这样的困境:面对空白的建模界面无从下手,参数设置像走迷宫,好不容易建完模型却发现仿真结果离奇失真&a…...

运维视角:用非Root用户安全部署KingbaseES数据库,附服务注册与状态检查命令

运维实战:以非Root用户安全部署KingbaseES数据库的完整指南 在企业的生产环境中,数据库作为核心数据存储组件,其部署安全性往往被许多运维团队忽视。传统教程中常见的"root用户直接安装"方式,实际上为企业埋下了严重的安…...

大模型面试100问:从Transformer到RAG,互联网大厂AI岗位必备!

本文主要针对想要或者正在从事大语言模型、知识库、搜索增强生成(RAG)的研发、产品和测试同学,在面试中会遇到什么样的问题? 以下主要来自于各位从事大模型研发、产品和测试的伙伴、朋友在面试互联网大厂、AI科技公司的相关AI岗位…...

OpCore-Simplify:从技术迷宫到一键直达的黑苹果配置革命

OpCore-Simplify:从技术迷宫到一键直达的黑苹果配置革命 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 曾经有多少个夜晚,你对…...

免费开源!掌握AMD Ryzen处理器深度调试:SMUDebugTool终极指南

免费开源!掌握AMD Ryzen处理器深度调试:SMUDebugTool终极指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项…...

嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路

嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路 仓库已经开源!所有教程,主线内核移植,跑新版本imx-linux/uboot都在这里,或者一起来尝试跑7.0的Linux!欢迎各位大…...

如何快速备份微信聊天记录:Mac用户的完整解决方案

如何快速备份微信聊天记录:Mac用户的完整解决方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾经因为误删重要微信聊天记录而懊恼不已&#xff1f…...