进程程序替换---exec函数族

本文详细介绍了exec函数家族的六个成员,包括它们的功能、参数及使用场景。解释了如何通过这些函数实现在现有进程中加载并执行新的程序,以及不同函数间的细微差别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        当我们fork创建新的子进程后,子进程通常调用exec函数以执行另一个程序。当进程

调用exec函数时,进程执行的程序完全替换为新的程序。exec并不创建新的进程,

所以前后进程的ID并未改变。(exec函数使得进程控制更加完善)

有六个以exec开头的函数,统称为exec函数

  #include <unistd.h>

int execl(const char *path, const char *arg, ...);

int execlp(const char *file, const char *arg, ...);

int execle(const char *path, const char *arg, ..., char *const envp[]);

int execv(const char *path, char *const argv[]);

int execvp(const char *file, char *const argv[]);

int execve(const char *path, char *const argv[], char *const envp[]);

exec+l  :

          字母  l(list)要求将命令中的每个命令行参数都当做参数传给它,命令行参数可

变。最后以NULL结尾

exec+v

         字母 v (vector)构造一个指向各个参数的指针数组,把数组首地址当做参数传

递,数组中最后也已NULL结尾

exec+e

         字母 e (environment)把新的环境变量表传给它。

exec+p

        不带字母p (表示path)的exec函数 第一个参数必须是程序的相对路径或绝对路径,例

如"/bin/ls"或"./a.out",而不能 是"ls"或"a.out"。

        对于带字母p的函数: 如果参数中包含/,则将其视为路径名。 否则视为不带路径的程

序名,在PATH环境变量的目录列表中搜索这个程序。

    l 和 v 不共存。

   这些函数如果调用成功直接执行新的程序,出错返回 -1 。因此只有出错返回值

   这些函数中只有execve是内核的系统调用。其他的只是库函数,最终都要调用execve。


   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值