linux系統呼叫 exec函式族簡介

2021-08-17 21:24:32 字數 694 閱讀 7391

6個exec只有execve是真正意義上的系統呼叫,其它都是在此基礎上經過包裝的庫函式。

exec函式族的作用是根據指定的檔名找到可執行檔案,並用他來取代系統呼叫的內容,也就是說在呼叫程序內部執行乙個可執行檔案(2進製或指令碼)。

exec函式執行成功後不返回,因為呼叫程序的實體,包括**段、資料段、棧堆等都被替換,只保留程序id等表面資訊為變。只有呼叫失敗才會返回-1,從原程式的呼叫點接著往下走。(exec相對於其他系統呼叫來說易受傷,要加判斷,如errno置為enoent表示找不到檔案或路徑)

linux執行新程式:

1、某程序認為自己無用了,還可以發揮一點餘熱,呼叫乙個exec讓自己換個靈魂重生。

2、某個程序想執行另外的程式,可以fork(vfork)出乙個新程序,然後呼叫exec。(普遍)

fork和vfork的區別:

fork會將呼叫程序的所有內容原封不動的拷貝到子程序,拷貝耗時較多。

vfork後不會立即拷貝,而是到真正用時才拷貝(稱之為

寫時拷貝),保證子程序先執行,exec或exit前在父程序位址空間執行,exec後才會有自己的程序空間。

對於exec來說,fork後拷貝的父程序內容會被馬上替換,造成浪費。而如果vfork後馬上exec就不會出現這種情況。

Linux中真正的系統呼叫 exec函式族

一般在使用過程中,通常通過fork建立乙個新的程序都是為了立即執行新的 不同的程式,通過呼叫exec函式族建立新的位址空間,並載入新的程式。最終通過exit 系統呼叫退出執行,提到這個函式可以想到與之相近的幾個函式,如下 exit 終結當前程序並將其所占用的資源釋放掉。exit 和 exit 終結當...

Linux下系統呼叫之exec函式族探索

主要通過在乙個c程式 呼叫另外乙個c 生成的執行檔案來說明。說是exec系統呼叫,實際上在linux中,並不存在乙個exec 的函式形式,exec指的是一組函式,一共有6個,分別是 include extern char environ int execl const char path,const...

php呼叫exec函式

在php中,經常遇到php呼叫外部指令碼程式,如exec,system函式 本環境在windows平台下測試 在php中呼叫perl指令碼,perl檔案內容如下 c xampp perl bin perl usejson useencode my val helloworld n my jsonco...