Linux系统编程——exec函数族

Linux系统编程------exec函数族

execl

c 复制代码
int execl(const char* path, const char* arg,...);

功能:创建一个运行path指定可执行文件的进程

path:指定文件路径

arg:参数列表第一个必须是该命令的名称,其余为选项和参数,也可以没有。

返回值:失败返回-1并设置errno

实例

代码:

c 复制代码
#include <cstdio>
#include <unistd.h>

int main()
{
    execl("/bin/ls", "ls","-l", NULL);
    return 0;
}

执行结果:

execle

c 复制代码
int execle(const char* path, const char* arg, ..., char* const envp[]);

功能:创建一个运行path指定可执行文件的进程

path:路径名

arg:参数列表包含执行文件名称,结尾以NULL结束

envp:指定的环境变量,结尾以NULL结束。

返回值:失败返回-1并设置errno

实例

代码:

c 复制代码
#include <stdio.h>
#include <unistd.h>

int main()
{

	char* envp[] = { "PATH=hello", NULL };
	execle("/usr/bin/env", "env", NULL, envp);
    return 0;
}

执行结果:

execlp

c 复制代码
int execlp(const char* file, const char* arg, ...);

功能:启动一个进程,运行file指定的文件,不需要指定路径,会自动搜索

file:文件名

argv:参数列表包含执行文件名称,结尾以NULL结束

返回值:失败返回-1并设置errno

实例

代码:

c 复制代码
#include <stdio.h>
#include <unistd.h>

int main()
{

    execlp("ls", "ls", "-l", NULL);
    return 0;
}

执行结果:

execv

c 复制代码
int execv(const char* path, char* const argv[]);

功能:创建一个运行path指定可执行文件的进程

argv:参数列表包含执行文件名称,结尾以NULL结束

返回值:失败返回-1并设置errno

实例

代码:

c 复制代码
#include <cstdio>
#include <unistd.h>

int main()
{
	char* arg[] = { "ls","-l", NULL };
    execv("/bin/ls",arg);
    return 0;
}

执行结果:

execvpe

c 复制代码
int execvpe(const char* file, char* const arg[], char* const envp[]);

功能:启动一个进程,运行file指定的文件,不需要指定路径,会自动搜索,可以指定环境变量

file:文件名

arg:执行的命令参数,包括命令名,选项等末尾以NULL结尾

envp:指定的环境变量,以NULL结尾。

返回值:失败返回-1并设置errno

实例

代码:

c 复制代码
#include <stdio.h>
#include <unistd.h>

int main()
{
	char* arg[] = { "env", NULL };
	char* envp[] = { "PATH=hello", NULL };
	execvpe("env", arg, envp);
   return 0;
}

执行结果:

execvp

c 复制代码
int execvp(const char* file, char* const argv[]);

功能:启动一个进程,运行file指定的文件,不需要指定路径,会自动搜索

file:文件名

argv[]:参数列表包含执行文件名称,结尾以NULL结束。

返回值:失败返回-1并设置errno

实例

c 复制代码
#include <stdio.h>
#include <unistd.h>

int main()
{
	char* arg[] = { "ls","-l", NULL };
	execvp("ls", arg);
   return 0;
}

运行结果:

后缀总结

l:以列表形式列出要执行的操作

v:将要执行的操作放到数组中

p:只指定文件名、不需要指定路径,会自动搜索

e:指定环境变量

相关推荐
啊吧怪不啊吧1 小时前
UU远程协助迎来升级!第一期更新实测
运维·服务器·远程工作
C_心欲无痕7 小时前
ts - tsconfig.json配置讲解
linux·前端·ubuntu·typescript·json
冰西瓜6007 小时前
国科大2025操作系统高级教程期末回忆版
linux
HIT_Weston8 小时前
93、【Ubuntu】【Hugo】搭建私人博客:面包屑(一)
linux·运维·ubuntu
cuijiecheng20188 小时前
Linux下Beyond Compare过期
linux·运维·服务器
HIT_Weston9 小时前
92、【Ubuntu】【Hugo】搭建私人博客:侧边导航栏(六)
linux·运维·ubuntu
CodeAllen嵌入式9 小时前
Windows 11 本地安装 WSL 支持 Ubuntu 24.04 完整指南
linux·运维·ubuntu
期待のcode9 小时前
前后端分离项目 Springboot+vue 在云服务器上的部署
服务器·vue.js·spring boot
AI 智能服务9 小时前
第6课__本地工具调用(文件操作)
服务器·人工智能·windows·php
码农小韩10 小时前
基于Linux的C++学习——指针
linux·开发语言·c++·学习·算法