进程程序替换(自主实现shell)

进程替换

  替换进程所运行的程序

  流程:将另一段代码加载到内存中,通过页表将原来进程的映射关系重新建立到新的程序在内存中的地址,相当于替换了进程所运行程序以及所要处理的数据

      (替换了代码段,重新初始化数据段)

  目的:让程序执行其他任务

  如何替换:exec函数家族

    execl  execlp  execle  execv  execvp  (这五个为库函数)

    execve  (这个为系统调用函数)

命名理解:
  l(list) : 表示参数采用列表

  v(vector) : 参数用数组

  p(path) : 有p自动搜索环境变量PATH

  e(env) : 表示自己维护环境变量 

 

  l 与 v的区别:

    execl ( ls, -a, -i, NULL )——参数平铺赋予

    execv ( )——用数组传输

  有p 与没有 p 的区别:是否自动到 PATH 所指定的路径下查找程序文件

    不带 p 需要自己给路径

    execl (" bin/ls", "ls", "-1", NULL)

    execlp ("ls", "ls", "-1", NULL)

  有没有 e 的区别:是否自定义环境变量

    env[0] = "MYENV = 1000"  env[1] = NULL

    execle (" /bin/ls", "ls", "-a", NULL, env)

 

main函数中的参数解析:

  int main(init argc, char* argv[], char* env[])

  argc:程序中有几个命令行参数

  argv:用于储存这些参数

  env:用于储存环境变量

 

自主实现一个简易的minishell:

  代码实现:

  

  

  

  

  

 

转载于:https://www.cnblogs.com/cuckoo-/p/11039188.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值