欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/6/15 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 进程程序替换(自主实现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

总结

以上是生活随笔为你收集整理的进程程序替换(自主实现shell)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。