完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
为什么需要exec函数呢? 比如说我们在程序当中要实现一个ls的功能,我们要怎么办?我们总不能把ls的源码弄过来,然后在程序当中重新实现一次吧,这是不现实的,所以我们具体看下下面的内容: (1)fork创建的子进程是为了单独地执行新程序宏观上面是父子进程同时进行的。 (2)可以利用fork的返回值通过if判断在当中直接书写我们的父子进程的内容,但是这样有一个问题就是我们只能也是必须在这个if当中书写代码,这样当我们代码量非常大的时候就显得不大现实。 (3)这个时候我们就引入了exec族函数,可以运行可执行程序 (4)子进程需要运行的程序可以进行单独编写,单独编译连接成一个可执行程序,主进程为父进程,fork之后调用exec函数来执行我们的可执行程序 int execl(const char *path, const char *arg, ...); int execv(const char *path ,char *const argc[]); 参数本质上面都是字符串,execl(l是list的缩写),execv则是先放入一个字符串数组当中,然后作为参数传入。 execp和execvp则是将我们的第一个参数变成const char *file. execl和execv是要提供全路径的 execp和execvp执行的文件名,会优先到我们的进程环境变量PATH指定的目录当中去查看是否有这个文件,没有的话就会在当前目录下面找 execle和execvpe参数列表当中多了一个字符串数组envp形参,就是环境变量的意思,和基本的exec的区别就是多了传了一个环境变量,可以指定查找的相应的目录就是了。 小技巧: which + 命令,可以查看命令所在的全路径 假设我们要执行ls -a -l这个命令的话,我们使用的代码如下: execl(“/bin/ls”,”ls”,”-a”,”-l”,NULL); |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4868 浏览 0 评论
87358 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4680 浏览 2 评论
3567 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2453 浏览 0 评论
1952浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1320浏览 1评论
1230浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1296浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1213浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 02:18 , Processed in 1.070356 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号