Linux操作系统之exec函数族: execl、execlp、execvp等
转载自:https://blog.csdn.net/xx18030637774/article/details/82141889
介绍#
当我们想在进程中执行另外一个函数或程序时,可以使用exec函数。进程调用exec函数,则该进程中用户空间所有代码和数据会完全被新程序替换,但是不会创建新进程,因此进程id不会发生改变。
函数族的头文件:#include <unistd.h>
l:list(命令行参数) p:path(环境变量) v:vector(命令行参数数组) e:environment(环境变量)
(1)execlp函数#
函数原型:int execlp(const char*file,const char*arg,...) ;成功:无返回,失败:返回-1
函数功能:借助PATH变量加载一个进程(常用于调用系统程序)
函数参数:参数1是要加载的可执行程序的名字,配合环境变量使用,如果在环境变量中没有找到,返回-1;参数2表示命令行参数(命令+参数列表)(在这个调用中,由于系统程序的源文件未知,因此对参数2 的命令要求可以随意,即第二个参数可以随意写。系统不会报错)
如 execlp("ls","ls","-a","-l",NULL);
execlp("ls","sdsffdfd","-a","-l",NULL);
(2)execl函数#
函数原型:int execl(const char*file,const char*arg,...);成功:无返回,失败:返回-1
函数功能:通过可执行文件+程序名+命令参数来执行;
函数参数:参数1是可执行文件的路径,参数2是文件程序名+命令参数。
如:add是add.c编译之后的可执行文件
execl("./add","add/c",NULL);
(3) execvp函数#
函数原型:int execvp(cosnt char *file,const char*argv[ ]);
函数功能:加载一个程序,自定义环境变量env
函数参数:参数1是命令的路径,参数2是变参函数,表示命令行参数,以NULL结尾
如 char *argv[]={"ls","-l",-"a",NULL);
execvp("/bin/ls",argv);
(4)exec函数族的其他函数之间联系#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南