zoukankan      html  css  js  c++  java
  • 进程程序替换(自主实现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:

      代码实现:

      

      

      

      

      

  • 相关阅读:
    English trip -- VC(情景课)1 A Get ready
    隔板法总结
    CF 题目选做
    ZROI 提高十连测 DAY2
    2019 09 05
    线性基总结
    解决痛苦的方法/cy
    梅深不见冬 树上贪心
    ZROI 提高十连测 Day1
    [USACO09NOV]硬币的游戏 博弈 dp
  • 原文地址:https://www.cnblogs.com/cuckoo-/p/11039188.html
Copyright © 2011-2022 走看看