程序替换:exec函数族

exec函数族:

程序替换:就是替换一个正在运行中的程序,替换一个pcb在内存中的代码和数据
程序替换使用的是exec函数族:
int execl(const char * path,const char * arg,…)
…为不定参数,以NULL结束
int execlp(const char * file,const char * arg,…),函数放在指定的路径下
*int execle(const char * path,const char * arg,…,char const env[])
带p与不带p的区别:加载的新程序名称是否需要带路径,带p则不需要,只要文件名即可,但是文件必须放在指定的路径下(PATH环境变量的路径下)
带e与不带e的区别:是否由我们自己来给新程序赋予环境变量
int execv(const char * path,char * const argv[])
int execvp(const char * file,char * const argv[])
int execvpe(const char * file,char * const argv[],char * const env[])
int execve(const char * path,char * const argv[],char * const env[])
l与v的区别:程序运行参数赋予方式不同

#include <stdio.h>
    2 #include <unistd.h>
    3 #include <stdlib.h>
    4 
    5 int main(int argc,char * argv[])
    6 {
    7     char *env[3] = {NULL};
W>  8     env[0] = "MYVAL = 1000";                                                                                                                                                          
    9     env[1] = NULL;
   10     int i;
   11     for(i = 0;i < argc;i++)
   12     {
   13         printf("argc[%d] = [%s]\n",i,argv[i]);
   14     }
   15     //execl("/bin/ls","ls","-l",NULL);
   16     //execlp("ls","ls","-i",NULL);
   17     execle("/bin/ls","ls","-li",NULL,NULL);
   18     char * arg[3] = {NULL};
W> 19     arg[0] = "myenv";
W> 20     arg[1] = "-i";
   21     arg[2] = NULL;
   22     execv("./myenv",arg);
   23     printf("hello ~~\n");
   24     return 0;
   25 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值