exec()系列函数

exec() 系列函数用于在当前进程中执行新的程序,它们是 Unix/Linux 系统中实现进程控制的重要组成部分。这些函数可以替换当前进程的映像,使其执行不同的程序,而不是创建新的进程。

下面介绍主要的exec() 系列函数:

1. execl

用法:

接受程序路径、参数列表,参数以 NULL 结束。

示例:

execl("/bin/ls", "ls", "-l", NULL);

这个示例将当前进程替换为 /bin/ls 程序,参数为 -l

2. execv

用法:

接受程序路径和参数数组,参数以 NULL 结束。

示例:

char *args[] = {"ls", "-l", NULL};
execv("/bin/ls", args);

这个示例与 execl 类似,但是参数以数组形式传递。

3. execle

用法:

类似于 execl,但可以指定环境变量,最后一个参数为环境变量数组。

示例:

char *env[] = {"PATH=/usr/bin", NULL};
execle("/bin/ls", "ls", "-l", NULL, env);

4. execve

用法:

底层的实现,接受程序路径、参数数组和环境变量数组。

示例:

char *args[] = {"ls", "-l", NULL};
char *env[] = {NULL};
execve("/bin/ls", args, env);

5. execvp

用法:

用于执行指定的程序,它会根据环境变量 PATH 自动查找可执行文件。它与 execv 类似,但 execvp 的第一个参数是文件名,而不是文件的完整路径。

语法:

int execvp(const char *file, char *const argv[]);
  • file:要执行的程序的名称(不需要完整路径,execvp 会根据 PATH 查找)。

  • argv:参数数组,以 NULL 结尾。数组的第一个元素通常是程序的名称。
    返回值:成功时不会返回;如果失败,返回 -1,并设置 errno。

posted @ 2024-10-25 20:21  hisun9  阅读(1)  评论(0编辑  收藏  举报