日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發布時間:2025/6/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程程序替换(自主实现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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。