exec系列函式的實現

2021-09-30 03:48:57 字數 554 閱讀 7979

exec系列函式從linux的linux_binfmt鍊錶中,通過依次呼叫每個結構的load_binary函式來選擇合適的執行格式,一旦找到就執行load_binary函式,否則嘗試下乙個linux_binfmt的load_binary

,直到嘗試完所有的linux_binfmt。

load_binary函式:

1.檢查128位的magic number,看檔案是不是屬於這個格式

2.讀取檔案的header

3.從檔案得到dynamic linker的位置

4.檢查dynamic linker是否有效

5.呼叫flush_old_exec()函式,清除被之前計算所使用的所有資源,像記憶體,頁表

6.使用do_mmap()將可執行檔案的text,data,bss段對映到程序中

7.如果可執行檔案還有其它段,也對映到程序中

8.載入dynamic linker

9.由dynamic linker將程式執行所需要的其它庫用mmap()對映到程序中

10.跳到程式的入口出開始執行程式

2009/02/15 日

exec系列函式

1.exec家族一共有六個函式,分別是 1 int execl const char path,const char arg,2 int execle const char path,const char arg,char const envp 3 int execv const char path...

exec 系列函式

本質 用新的程式代替新的程序,可以指定要執行程式的檔案exec函式如下 intexecl const char path,const char arg,path 指定路徑 相對 絕對路徑 arg 相當於命令列引數,最後加上null。intexeclp const char file,const ch...

Linux 之exec系列函式

當程序呼叫exec系列函式中的任乙個時,該程序使用者空間資源 正文 資料 堆 棧 完全由新程式替代。因為呼叫exec並不建立新程式,如果無特殊指示 程序核心資訊基本不用修改 1 execl函式宣告如下 from usr include unistd.h int execl const char pa...