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:指定环境变量

相关推荐
k4m7v2pz4 小时前
ThinkPad E490 风扇 “转两秒就停“ 实录:迟滞曲线 + 最短运转时间
linux·脚本·archlinux·thinkpad·风扇·散热
拂拉氏4 小时前
【知识讲解】 Linux文件系统底层认识
linux·文件系统
IT大白鼠5 小时前
彭大帅的AI运维助手——自然语言管理 Linux 集群与网络设备——第 1 篇 · 骨架:说人话,跑命令:自然语言 SSH 运维的骨架
linux·运维·人工智能
檀越剑指大厂5 小时前
抽屉里的手机还能开博客?用 Typecho 和 cpolar 搭一台可远程访问的小服务器
运维·服务器·智能手机
牢姐与蒯5 小时前
Linux信号(一).信号产生
linux·运维·服务器·ubuntu
FfHUCisI5 小时前
sync.Once 与 sync.Cond 源码与并发控制陷阱
服务器·开发语言·后端·golang
爱签AI电子合同6 小时前
电子合同上手成本怎么测?易用性维度专项测评
服务器·人工智能·智能合约·企业微信
aixingkong9218 小时前
Nvidia为例 XPU的Multi-Host、Socket Direct 、GPUDirect、RDMA 技术点分析
服务器·网络·硬件架构·硬件工程
雯宝11 小时前
mnt_init 函数
linux
律宏阔17 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows