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

相关推荐
Chenyu_3103 小时前
DPDK、TC 和 XDP:Linux 高性能网络到底在优化什么
linux·服务器·网络·缓存
陈让然5 小时前
WSL 桥接设置静态IP(快速)
linux·网络·ubuntu
乔旭伟5 小时前
Linux 服务器备份实战:一致性快照、日志归档与恢复演练
linux·运维·服务器
乔旭伟5 小时前
Linux 服务器安全加固实战:SSH、防火墙、补丁与入侵排查
linux·服务器·安全
裕晟资质规划6 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全
刘胡子大叔6 小时前
备份包只有 1.5K?
linux·服务器·网络
无足鸟ICT6 小时前
【RHCA+】RPM包验证和数字证书
linux·运维·服务器
erzong2316 小时前
Linux操作系统:线程概念与控制
linux·算法
星恒随风6 小时前
Linux线程概念详解:从分页存储、页表、MMU与TLB,深入理解线程和进程的区别与联系
linux·运维·笔记·学习·状态模式
小范的技术工坊7 小时前
Linux应用开发(文件IO)
linux·stm32·单片机