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

相关推荐
Bert.Cai12 分钟前
Linux tail命令详解
linux·运维
sbjdhjd39 分钟前
Docker | 核心概念科普 + 保姆级部署
linux·运维·服务器·docker·云原生·面试·eureka
charlie11451419139 分钟前
嵌入式C++教程实战之Linux下的单片机编程(9):HAL时钟使能 —— 不开时钟,外设就是一坨睡死的硅
linux·开发语言·c++·单片机·嵌入式硬件·c
以太浮标41 分钟前
华为eNSP模拟器综合实验之- DHCP、DNS、HTTP和FTP服务器配置案例Client-Server
linux·服务器·windows·http·华为·信息与通信
西柚小萌新1 小时前
【人工智能:Agent】--OpenClaw设计架构解析
运维·服务器·架构
摇滚侠1 小时前
Vmvare 虚拟机安装 Linux CentOS 7 操作系统 一键安装 Docker 1Panel 一键安装 MySQL Redis OpenClaw
linux·docker·centos
路溪非溪1 小时前
如何使用procfs来排查问题
linux·arm开发·驱动开发
帕里亚1 小时前
ubuntu18.04 APT升级 glibc2.28 (Jetson)
linux·运维·windows
arvin_xiaoting1 小时前
OpenClaw学习总结_IV_认证与安全_1:OAuth与认证详解
服务器·学习·安全