• 进程程序替换(自主实现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:

      代码实现:

      

      

      

      

      

  • 相关阅读:
    hdu 3790 最短路径问题
    hdu 2112 HDU Today
    最短路问题 以hdu1874为例
    hdu 1690 Bus System Floyd
    hdu 2066 一个人的旅行
    hdu 2680 Choose the best route
    hdu 1596 find the safest road
    hdu 1869 六度分离
    hdu 3339 In Action
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/cuckoo-/p/11039188.html
Copyright © 2020-2023  润新知