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

Linux系统编程——exec函数族

Linux系统编程——exec函数族

execl

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

功能:创建一个运行path指定可执行文件的进程
path:指定文件路径
arg:参数列表第一个必须是该命令的名称,其余为选项和参数,也可以没有。
返回值:失败返回-1并设置errno

实例

代码:

#include <cstdio>
#include <unistd.h>int main()
{execl("/bin/ls", "ls","-l", NULL);return 0;
}

执行结果:
在这里插入图片描述

execle

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

功能:创建一个运行path指定可执行文件的进程
path:路径名
arg:参数列表包含执行文件名称,结尾以NULL结束
envp:指定的环境变量,结尾以NULL结束。
返回值:失败返回-1并设置errno

实例

代码:

#include <stdio.h>
#include <unistd.h>int main()
{char* envp[] = { "PATH=hello", NULL };execle("/usr/bin/env", "env", NULL, envp);return 0;
}

执行结果:
在这里插入图片描述

execlp

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

功能:启动一个进程,运行file指定的文件,不需要指定路径,会自动搜索
file:文件名
argv:参数列表包含执行文件名称,结尾以NULL结束
返回值:失败返回-1并设置errno

实例

代码:

#include <stdio.h>
#include <unistd.h>int main()
{execlp("ls", "ls", "-l", NULL);return 0;
}

执行结果:
在这里插入图片描述

execv

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

功能:创建一个运行path指定可执行文件的进程
argv:参数列表包含执行文件名称,结尾以NULL结束
返回值:失败返回-1并设置errno

实例

代码:

#include <cstdio>
#include <unistd.h>int main()
{char* arg[] = { "ls","-l", NULL };execv("/bin/ls",arg);return 0;
}

执行结果:
在这里插入图片描述

execvpe

int execvpe(const char* file, char* const arg[], char* const envp[]);

功能:启动一个进程,运行file指定的文件,不需要指定路径,会自动搜索,可以指定环境变量
file:文件名
arg:执行的命令参数,包括命令名,选项等末尾以NULL结尾
envp:指定的环境变量,以NULL结尾。
返回值:失败返回-1并设置errno

实例

代码:

#include <stdio.h>
#include <unistd.h>int main()
{char* arg[] = { "env", NULL };char* envp[] = { "PATH=hello", NULL };execvpe("env", arg, envp);return 0;
}

执行结果:
在这里插入图片描述

execvp

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

功能:启动一个进程,运行file指定的文件,不需要指定路径,会自动搜索
file:文件名
argv[]:参数列表包含执行文件名称,结尾以NULL结束。
返回值:失败返回-1并设置errno

实例

#include <stdio.h>
#include <unistd.h>int main()
{char* arg[] = { "ls","-l", NULL };execvp("ls", arg);return 0;
}

运行结果:
在这里插入图片描述

后缀总结

l:以列表形式列出要执行的操作
v:将要执行的操作放到数组中
p:只指定文件名、不需要指定路径,会自动搜索
e:指定环境变量

http://www.dtcms.com/a/564940.html

相关文章:

  • 简单搭建express服务器
  • 设置网站建设大连专业网站设计服务商
  • Ollama + Open WebUI
  • 张家界市建设工程造价管理站网站好看的ui界面
  • 【WEB应用安全】XSS攻击实验全流程实战!从漏洞检测到Cookie窃取(附Payload解析+避坑指南)
  • Linux系统启动流程深度解析:从BIOS到用户空间的全链路指南
  • AI编程工具TRAE解决日常问题之SQLite数据复制
  • 百度网盘下载速度被限制怎么办?百度网盘如何解除限速下载方法
  • 多协议网关架构
  • 深入级联不稳定性:从 Lipschitz 连续性视角探讨图像恢复与目标检测的协同作用
  • 如何实现html显示WebRTC视频监控流
  • 长沙网站设计服务商wordpress和vue
  • DeepSeek-OCR 深度解析
  • [手机AI开发sdk] Aid_code IDE | PC浏览器同步访问
  • 视觉语言模型(VLM)深度解析:如何用它来处理文档
  • 空载长线电容效应
  • Text Grab,一款OCR 截图文字识别工具
  • 网站建设与管理教学方案网站的技术解决方案
  • 从零开始学习iOS App开发:Xcode、Swift和发布到App Store完整教程
  • HTMLCollection 对象
  • CANN算子开发实战:Batch Normalization高性能实现指南
  • 【Delphi】再谈给EXE文件动态添加数据(附加大数据 2G)
  • 1、Python-内置函数、Pass空语句
  • 为什么 Transformer 使用 LayerNorm 而不是 BatchNorm?
  • 昇腾 NPU 实战:Gemma 2 模型部署、多维度评测与性能优化全流程解析
  • 使用Visual Studio中的数据断点快速定位内存越界问题的实战案例分享
  • 做网站的大创结项项目建设表态发言稿
  • 家政类网站开发成本青岛最新疫苗接种
  • B站点击埋点数据分析
  • 用 PyTorch 训练 NestedUNet 分割细胞核