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

        当我们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。


   



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值