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:

      代码实现:

      

      

      

      

      

  • 相关阅读:
    [LeetCode#260]Single Number III
    1 sql server中添加链接服务器
    1 sql server 中cursor的简介
    1 .net将xml反序列化
    1 C# 将对象序列化
    1 SQL SERVER 实现字符串分割成table的方法
    1 asp.net 中如何把用户控件应用于母版页
    1 .net中自定义事件的步骤
    .NET中跨线程访问winform控件的方法
    1 sql server 中merge的用法
  • 原文地址:https://www.cnblogs.com/cuckoo-/p/11039188.html
Copyright © 2011-2022 走看看