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

相关推荐
悠悠1213827 分钟前
告别Zabbix?我用Netdata只花10分钟就搞定了50台服务器的秒级监控(保姆级实战)
运维·服务器·zabbix
天庭鸡腿哥41 分钟前
大小只有4K的软件,可让系统瞬间丝滑!
运维·服务器·windows·microsoft·everything
虚伪的空想家1 小时前
华为昇腾Atlas 800 A2物理服务器开启VT-d模式
运维·服务器·ubuntu·kvm·vt-d·直通
学渣676561 小时前
服务器端口映射
运维·服务器
红袜子i1 小时前
【问题】实验室服务器恢复记录,一个主板挂两张显卡,
运维·服务器
z***94842 小时前
Linux下安装Nginx服务及systemctl方式管理nginx详情
linux·运维·nginx
凉晓风2 小时前
Linux上TCP通信异常排查工具命令
linux·运维·tcp/ip
Xの哲學2 小时前
Linux 分区表深度技术剖析
linux·网络·算法·架构·边缘计算
w***4242 小时前
SQL-Server链接服务器访问Oracle数据
服务器·sql·oracle
孟先生丨2 小时前
PVE 系统 2.5G网卡驱动从 r8169 切换到 r8125
服务器·5g