fork(三程序替換)

2021-09-08 03:11:05 字數 863 閱讀 5410

程序替換:exec指定乙個程式把全新的程式載入到子程序中,子程序將會指向新程序  

exec每個函式都有返回值,只有出錯時返回值才會有效,正確時會被覆蓋掉,也就沒人接收了

exec可以不用判斷,拿到返回值就已經代表出錯,

int execl(char* pathname,char *ar**0,char* ar**1………..(char*)0)。/第乙個引數是可執行檔案的路徑加名稱/當前目錄下找

int execv(char* pathname,char* ar**)

int execlp(char* filename,char *ar**0,char* ar**1………..(char*)0)//如果給定可執行檔案的路徑則去給定的路徑下搜尋,如果沒有給路勁,去path指定的路徑下搜尋   p也就是path

int execvp(char* filename,char *ar**)//第乙個引數是可執行檔名稱

int execle(char* pathname,char *ar**0,char* ar**1………..(char*)0,char* envp)//多了個環境變數

int execve(char* pathname,char *ar**,char* envp)

l代表引數以列來給

pathname:指定要使用的可執行檔案的路徑加名稱

新程式替換之後從main開始執行 ar**就是傳給main的引數,argc底層自己計算

最後乙個和前面五個又有差別:execve 是系統呼叫 man 2 + 函式名 看系統呼叫前五個用2+ 看不了  man 3+ 看庫函式,前五個通過這個看

前五個是庫函式 最後乙個是系統呼叫

exec替換的是程序實體 pcb並沒有改變

fork函式替換為SylixOS程序技術筆記

1 適用範圍 sylixos是一款為嵌入式系統設計的硬實時系統。為了保證系統的實時性,系統建立子程序時不做頁表切換 頁表切換很耗時間,不利於實時性的體現 即父子程序共享同乙個頁表,而對於linux下fork函式建立的父子程序是需要進行頁表複製和切換的。為了在sylixos下實現linux的fork函...

fork程序建立

fork建立子程序,fork函式返回兩個值,當為0時,則認為是子程序 塊執行區域,而不為0則是父程序 塊執行區域。我們需要知道的是,fork子程序可以與父程序共享部分程序上下文,而與此不同的是execl函式,一旦開始執行到execl函式時,啟動被呼叫的函式,後面的 則不再執行,而是直接執行呼叫的程式...

fork程序相關

include include include include include int main int argc,char argv if pid 0 else if pid 0 return 0 列印如下。i am father i am son i am father i am son i a...