Linux——在進程中運行可執行文件_未完成

創建進程以後的兩種用法:
1. 父進程希望子進程能夠與自己共享代碼,並且拷貝自己的數據段,從而讓父子進程繼承相同的打開的文件以及一些創建時刻的某些狀態信息.然後讓父子進程執行不同的代碼段.
2. 父進程在創建子進程之後,希望子進程在其進程空間當中加載另外一個可執行文件,從而達到一個創建一個全新進程的目的.

第二點其實是大多數情況
1. 進程調用exec系列函數在進程中加載執行另外一個可執行文件
2. exec系列函數替換了當前進程(執行該函數的進程)的正文段、數據段、堆和棧(來源於加載的可執行文件)
3. 執行exec系列函數後從加載可執行文件的main函數開始寵幸執行
4. exec系列函數並補創建新進程,所以在調用exec系列函數後其進程ID並未改變,已經打開的文件描述符不變.
在這裏插入圖片描述

exec函數有6個函數,因爲這六個函數的開頭均爲exec,所以稱爲exec系列函數.6個函數分別位:execl, execle, execlp, execv, execve, execvp
1. l:表示list, 每個命令行參數都說明爲一個單獨的參數
2. v:表示vector, 命令行參數放在數組中
3. e:表示由函數調用者提供環境變量表
4. p:表示通過環境變量PATH來指定路徑,查找可執行文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章