当前位置: 首页 >  地方动态  >   >  正文

exec()函数在C++中的应用及其用法

  • 2023-05-09 11:57:03 来源:脚本之家
目录
前言exec()execl()execlp()

前言

fork函数之后,如果想要把子进程换成一个我想要执行的进程,这时,就不得不使用 exec()函数了,这也是 fork()的意义所在。当然,exec系列的函数也可以将当前进程替换掉,不一定非要fork()一个子进程。常见的fork()调用例子有很多,比如从 wechat 发起一个语音电话、从 bash 或者zsh执行一个 a.out程序,都是在利用exec系统调用将新产生的子进程完全替换成目标进程。

比如,这是一个死循环程序(目的是为了观察,让它活得久一点):


(相关资料图)

#include 
int main() {
    int a = 0;
    while (1) {
        a++;
    }
    return 0;
}

通过编译,执行:

gcc fork_example.c -o fork_example

./fork_example

查看进程:top

可以发现,fork_example的进程的 PPID 为 54861,我们看看它是谁:ps 54861

PID TT STAT TIME COMMAND
54861 s018 Ss 0:00.23 /bin/zsh -il

很明显,它是 zsh,现在可以终止fork_example:kill 57892

zsh: terminated ./fork_example

程序就会结束!以上例子,可以看到我们的子进程,就是由一个父进程fork()之后替换的。

exec()

#include

原型:

int execl(const char *path, const char *arg, ...)
int execv(const char *path, char *const argv[])
int execle(const char *path, const char *arg, ..., char *const envp[])
int execve(const char *path, char *const argv[], char *const envp[])
int execlp(const char *file, const char *arg, ...)
int execvp(const char *file, char *const argv[])

参数:

path参数表示你要启动程序的名称,包括路径名;

arg参数表示启动程序所带的参数,一般第一个参数为要执行命令名

返回值:成功返回0,失败返回-1

上述exec系列函数底层都是通过execve系统调用实现:

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

① 查找方式:上表其中前4个函数的查找方式都是完整的文件目录路径,而最后2个函数(也就是以p结尾的两个函数)可以只给出文件名,系统就会自动从环境变量“$PATH”所指出的路径中进行查找。

② 参数传递方式:exec函数族的参数传递有两种方式,一种是逐个列举的方式,而另一种则是将所有参数整体构造成指针数组进行传递。

在这里参数传递方式是以函数名的第5位字母来区分的,字母为“l”(list)的表示逐个列举的方式,字母为“v”(vertor)的表示将所有参数整体构造成指针数组传递,然后将该数组的首地址当做参数传给它,数组中的最后一个指针要求是NULL。读者可以观察execl、execle、execlp的语法与execv、execve、execvp的区别。

③ 环境变量:exec函数族使用了系统默认的环境变量,也可以传入指定的环境变量。这里以“e”(environment)结尾的两个函数execle、execve就可以在envp[]中指定当前进程所使用的环境变量替换掉该进程继承的所以环境变量,这极大地提供了灵活度。

execl()

该函数的定义为:

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

可以看到,它的参数为一个 path,由于不带 p,因此,最后一个参数为 NULL

例如:

#include 
#include 
int main() {
    printf("hello!\n");
    // 替换 main 进程
    execl("/bin/ls", "ls", "-a", NULL);
    // good bye! 并不会被打印出来
    printf("good bye!\n");
    return 0;
}

执行结果:

hello!
. a.out execlp.c fork_example myshell.c
.. execl.c fork.c fork_example.c

可以看到,它成功地执行了"ls -a"命令。

execlp()

该函数的定义为:

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

该函数带p,第一个参数是一个 *file,说明不需要带完整路径,它会在默认环境变量里面自动查找:

#include 
#include 
int main() {
    printf("hello!\n");
    // 替换 main 进程
    execl("ls","ls", "-a", NULL);
    // good bye! 并不会被打印出来
    printf("good bye!\n");
    return 0;
}

运行结果:

hello!
good bye!

说明,并没有成功替换,这是我们带个 p:

#include 
#include 
int main() {
    printf("hello!\n");
    // 替换 main 进程
    execlp("ls","ls", "-a", NULL);
    // good bye! 并不会被打印出来
    printf("good bye!\n");
    return 0;
}

运行结果:

hello!
. a.out execlp.c fork_example myshell.c
.. execl.c fork.c fork_example.c

成功替换!其它的函数也是同理,就不再赘述了。

到此这篇关于exec()函数在C++中的应用及其用法的文章就介绍到这了,更多相关C++ exec()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

标签:

最新推荐

exec()函数在C++中的应用及其用法

exec()函数在C++中是一个进程控制函数,用于创建新进程执行其他程序或命令行指令。exec()函数可以替换当前

世界信息:失业的人可以办理停息挂账吗?银行申请停息挂账的条件苛刻吗?

失业的人可以办理停息挂账吗?可以。停息挂账是银行业给予信用卡持卡人的一项权益,如果持卡人因为失业、

全球视讯!龙建股份5月9日快速反弹

以下是龙建股份在北京时间5月9日11:01分盘口异动快照:5月9日,龙建股份盘中快速反弹,5分钟内涨幅超过2%,

安顺借力高铁打造一流旅游城市

安顺借力高铁打造一流旅游城市---“21℃的安顺,非常凉爽非常美丽,期待下次重逢。”5月3日,陈思发布朋...

郑东新区圃田乡:开展燃气安全检查专项行动

为确保辖区居民群众安全使用燃气,进一步加强燃气安全防范工作,严防燃气泄漏爆燃事故发生,5月8日,郑州市

大雨中把伞留给八旬老太!为六安这位公交司机点赞_环球关注

  5月3日中午突降阵雨,六安公交41路的张克宏师傅遇到了一位忘带伞的老奶奶,随之发生了“一把伞”的...

洛克王国小草虫进化_小草虫

一、题文课内阅读是培养阅读理解解题能力的基础,课内阅读需要融入到教学中来,为方便教学,今天查字典语文

全球短讯!爸趴在妈身上在日_压在我妈的身上

1、鬼压床,指睡觉的时候突然有了意识但是身体不能动,事实上是罹患了睡眠障碍的疾病。2、“鬼压身”的...

天天快播:沪指创阶段新高 “中特估”行情纵深演绎

5月9日电,A股三大指数5月8日集体上涨。在银行股和“中字头”股票的带动下,上证指数创今年以来新高。A...

【环球热闻】皮蛋是什么动物的蛋?

皮蛋又被称为松花蛋、泥蛋,使用石灰石、鸭蛋等原料制作的蛋类食品,它主要的制作材料是鸭蛋,也可以用鸡蛋

LEC春季赛最佳阵容公布:MAD四人入选一阵 下路为BDS.Crownie 全球微头条

刚刚,LEC官方在推特上发布春季赛最佳阵容,其中一阵中MAD四人上榜,仅下路为BDS战队的Crownie。上单MADCha

环球观热点:广信股份(603599):5月8日北向资金减持33.14万股

5月8日北向资金减持33 14万股广信股份。近5个交易日中,获北向资金减持的有5天,累计净减持418 75万股。近2

新消息丨自然流产出血一般几天才干净 自然流产

今天来聊聊关于自然流产出血一般几天才干净,自然流产的文章,现在就为大家来简单介绍下自然流产出血一般几

斜槎和马牙槎_斜槎_精彩看点

1、位置不同,形状不同,连接情况不同。2、是用于不同的施工要求马牙槎较好斜槎、直槎较差。本文到此分享完

两部门要求房产中介合理降费:鼓励按成交价越高、服务费率越低原则实行分档定价 当前独家

5月8日,住房和城乡建设部、国家市场监督管理总局联合印发《关于规范房地产经纪服务的意见》(简称《意见》

“药茅”片仔癀涨停!产品价上调29%创历史最高涨幅 | 钛媒体焦点-世界要闻

据华安证券研究报告数据,天然麝香价格从2018年38万元 千克涨至2022年44万元 千克,累计涨幅达到15 8%。东

在中超联赛中实施暴力行为 河南外援舒尼奇被停赛5场罚款5万元

新京报讯据中国足球协会网站消息,5月8日,中国足球协会纪律委员会发布《关于对河南足球俱乐部队球员舒尼奇

如何用头巾制作衬衫_送弟弟生日礼物送什么好12岁男孩 全球热推荐

你需要的东西20至24英寸头巾枕套铁3 4英寸宽的丝带缝纫针针(或缝纫机)线松紧带将普通头巾变成创意俱乐部

全球聚焦:脚痒起水泡脱皮怎么治疗好_脚脱皮怎么治疗

足部脱屑的原因要明确,常见原因如下:1、过敏引起的,如湿疹、皮炎会出现足部红肿、脱皮、瘙痒,一般是双

2023南宁免费宫颈癌筛查最新消息

南宁金钗镇中心卫生院一、活动时间:2023年5月10-13日9:00~16:00二、活动地点:金钗镇中心卫生院三、筛查对

微信分付怎么开通?一文了解详细的开通流程|世界球精选

开通微信分付具体流程如下:1、进入服务页面选择钱包;2、点击钱包可以看到分付;3、点击查看分付额度;4、

意象和意境的概念_意象和意境

1、正好写篇类似的论文,就摘取片段给你吧,记得上分!文艺理论大家童庆炳先生在《文艺理论教程》一书中对

楚天科技(300358)2022年年报及23Q1季报点评:扣除股权激励费用后整体业绩向好 新产品新领域多点开花

楚天科技(300358)2022年年报及23Q1季报点评:扣除股权激励费用后整体业绩向好新产品新领域多点开花

黑猫奇闻社第二章作品顺序是什么 油画顺序图_速讯

黑猫奇闻社的2-2关卡中,女主会遇到一个艺术展,在里面能看到四个油画作品,要求是调整作品的顺序,许多

全年去世人口的实际寿命统计,你知道江苏省是多少吗?|世界新要闻

全年去世人口的实际寿命统计,你知道江苏省是多少吗?前几天我公布了全国数据,今天公布江苏省的分析数据!

高颜值、创新核,长三角示范区描绘“最江南”生态画卷

一脚踏在上海青浦,一脚踏在江苏吴江,这魔幻的一幕就发生在元荡桥上。”  不止元荡,目前长三角示范...

应用统计学硕士怎么样在职研究生是干什的

1、应用统计学硕士怎么样可以啊,工商大学属于二本中的优秀学校了。2、应用统计学在职研究生应用统计专业一

全球速讯:最强大脑!晟维新能源智合云边一体跟踪控制系统

跟踪支架系统作为可以显著带来发电增益的,主要应用于大型地面电站场景的平衡系统(BOS),是一套结合了机

当前关注:会计电算化是什么意思

会计电算化是以电子计算机为主的当代电子技术和信息技术应用到会计实务中的简称,是一个应用电子计算机实现

快报:龙岩仍在搜救4名落水失联干部,另有8名被困群众被成功救出

4名落水失联干部的救援工作仍在全力进行中。澎湃新闻记者韩雨亭图福建省龙岩市新罗区4名落水失联干部牵动人

我国可重复使用试验航天器成功着陆_世界滚动

新华社酒泉5月8日电(记者李国利)我国在酒泉卫星发射中心成功发射的可重复使用试验航天器,在轨飞行276天

步军校

1、步军校。2、是清朝的一个官职名称。3、主管八旗步军营。

天天微头条丨大模型“群雄逐鹿”,科大讯飞何以脱颖而出?

中新网5月8日电自以“生成式人工智能”(GenerativeAI)为核心技术的聊天机器人ChatGPT在全球掀起热潮以来,

除了访古寻踪,寒山寺的那碗素面不可错过

“姑苏城外寒山寺,夜半钟声到客船”,一首《枫桥夜泊》,让枫桥与寒山寺成为了许多人对于苏州的第一印...

高超音速武器难拦截神话破灭了详细内容|世界热消息

大家好,小太来为大家解答以上问题。高超音速武器难拦截神话破灭了?很多人还不知道,现在让我们一起来看看

云霞路多处窨井盖松动 每日快看

松动的窨井盖近日,市民张先生来电反映,云霞路上多处窨井盖存在松动的情况,车辆经过时,会产生比较大的响

iPhone 15系列 确定砍掉实体按键_世界要闻

在此之前一直有传闻,iPhone15Pro系列将要取代此前的实体按键,并且标配固态按键,而近日苹果供应商似乎又

今日热闻!老百姓身边的黑科技之“住” |“高保温的被动房”:冬天不用通暖气夏天不用开空调

今年1月,坐落于海淀区苏家坨镇翠湖科技园的北京实创医谷产业园东区项目正式竣工交付使用。整个东区项目包

扬州特产是什么_扬州有什么特产-天天快看点

欢迎观看本篇文章,小勉来为大家解答以上问题。扬州特产是什么,扬州有什么特产很多人还不知道,现在让我们

世界百事通!好莱坞大片再疲软!《银河护卫队3》首周末票房不足2亿,较前作倒退42%

搜狐娱乐讯(哈麦 文)今年以来,进口好莱坞大片票房疲软成了常态,刚刚上映的《银河护卫队3》号称漫威最佳

世界观点:“银发团”旅游应从实际出发

“银发团”旅游应从实际出发

魔都夏日水果C位已就位!今年“南汇8424西瓜”皮薄、瓜甜、汁多,18年老游客成“瓜粉”

“阿哥我大概下午4点到虹桥火车站,5点多到浦东。”“晓得了,晚饭已经准备好了,有你要吃的蟹粉狮子头...

环球焦点!常亮 英文怎么翻译_常亮 英文

1、redlightflashesallthetime 。本文就为大家分享到这里,希望小伙伴们会喜欢。

独立显卡与集成显卡哪个好_显卡和主板不兼容

1、不兼容显卡风扇肯定会转的,风扇只是一个单独的显卡散热降温工具,只要开机。2、主板通电就会转的。以上

新动态:全球卫星定位系统软件下载_辅助全球卫星定位系统

当前大家对于辅助全球卫星定位系统都是颇为感兴趣的,大家都想要了解一下辅助全球卫星定位系统,那么小美也

微速讯:对话中原|信阳“节”潮"会”玩

信阳“节”潮 "会”玩第31届信阳茶文化节从3月底开始,一直持续到6月份结束的4大板块34项系列活动已先...

原子核中带电的粒子是什么 原子核中带电的粒子是

今天来聊聊关于原子核中带电的粒子是什么,原子核中带电的粒子是的文章,现在就为大家来简单介绍下原子核中

滚动:动力电池包的关键技术

摘要:动力电池包作为电动汽车的核心组件之一,对于电动汽车的性能和使用寿命有着至关重要的影响。本文将从

北京体育大学好不好就业_北京体育大学好不好_环球聚焦

今天小编肥嘟来为大家解答以上的问题。北京体育大学好不好就业,北京体育大学好不好相信很多小伙伴还不知道

X 广告
X 广告

精彩放送

环球简讯:密山之美藏在四季变幻中!

处罚罚金的执行机关|环球观点

地产西瓜甜蜜上市!盐城响水瓜果走销长三角

ST华英:正通过线上+线下全渠道铺货鸭一优系列预制菜|聚看点

全球热点评!俄外交部:美乌应为针对普里列平的恐袭案件负责

快看点丨陈佩斯儿子晒家庭聚会照,4孩共用一张脸都高颜值,大女儿似仙女

“史上最火五一”结束!台湾眼巴巴看大陆热闹,蔡英文举动惹众怒 环球消息

乌海这些道路占道施工!|世界滚动

男子将女友打伤致昏迷,随后逃往外省!仅3天被抓回

请兼职协议律师收费标准 热点

FF首台量产车在FF ieFactory工厂下线_环球时讯

【京蒙协作】内蒙古10个单位与北京8个协会企业签约

当前报道:最新战报!头号种子2:4不敌张本美和!日乒奥预赛女单四强出炉

对社会上的不良行为的感悟_在社会生活中人的不良行为对社会产生怎样的影响

单独纹样图案大全_单独纹样 环球时快讯

网站建设的基本流程是什么_网站建设基本流程

防汛四级应急响应启动,专家组赴江西暴雨现场指导 每日焦点

美国黑人男子在地铁遭扼喉身亡引发抗议

浙江队亚冠对手确认,8月22日将在主场迎来亚冠附加赛

怀孕7个月,还需要继续吃钙片吗?

锦浪科技(300763.SZ):目前产能利用率持续维持在高位,定增募资拟新增95万台组串式逆变器产能,缓解现有产能不足的局面|环球观焦点

据塔斯社:俄罗斯民族主义作家扎哈尔·普里列平所乘汽车发生爆炸并受伤。

曲终人散是什么意思-曲终人散是什么意思

江西多地遭暴雨袭击|世界快消息

渭源县新寨镇新寨小学2023年省为民办实事渭源县扩食堂改厕所项目中标公示 焦点讯息

lol4级荣誉怎么样_lol4级荣誉

翰博高新:公司积极布局与Mini LED显示技术相关的新业务和新产品,关注行业动态-天天观天下

正荣地产:前4月合约销售金额64.41亿元 时快讯

环球新消息丨汉高集团一季度销售额同比增长6.6%至56亿欧元

谁是我的新郎衡越mp3下载(谁是我的新郎 衡越) 天天聚看点

杨浦企业亮相数字中国建设峰会!集中展示最新成果,分享发展经验 世界最资讯

5月11日创业板朗坤环境新股申购分析

天风证券:给予比音勒芬买入评级 全球快报

每日速读!立夏将至农事忙

期房出售主要是指开发商建设期房出售|新动态

用“小卡片”托举起“大安全” ——徐矿集团张双楼煤矿创新实施安全生产责任制“随身卡”|天天聚看点

广发宏观:4月中观景气分化进一步加剧 基本面定价权重将逐步上升

当前讯息:罗体:巴神前女友承诺半裸庆祝夺冠,那不勒斯球迷非常期待

【世界快播报】扬帆新材股东户数下降12.32%,户均持股10.96万元

世界热推荐:洛阳市城乡规划条例第三条内容是些什么?

香港特区政府欢迎国际货币基金组织肯定香港经济增长和金融稳定

格力1.5匹变频空调价格多少?格力1.5匹变频空调推荐|天天热点

世界简讯:痛心!家长带4名孩子去水库……3人不幸溺亡!

激扬青春丨数字时代的中国新青年

全球今热点:光华股份:目前公司年产12万吨粉末涂料用聚酯树脂项目正按计划实施中

收外地游客30元而本地人只花6元,网友质疑区别对待-全球观速讯

环球速读:追梦:G3恩比德将在主场接受MVP奖杯 我预计他将会打出统治力

赛意信息:公司高管拟增持300万元至500万元公司股份_环球今头条

上海:2023年统一高考外语科目考试(6月)英语听力试运转即将举行

克宫遭无人机袭击,俄誓要斩首泽连斯基,话音刚落,乌首都就被炸|焦点热门

Copyright ©  2015-2022 现在律师网版权所有  备案号:粤ICP备18023326号-5   联系邮箱:855 729 8@qq.com