Linux 的程序操作(執行程序)

2021-09-28 21:58:06 字數 2405 閱讀 4941

如果需要在子程序中執行一些自定義的動作,則需要呼叫 exec 函式族。

當程序呼叫 exec 系列函式的時候,該程序執行的程式被立即替換為新的程式,而新程式則從 main 函式開始執行,並立刻替換掉了當前程序的正文段、資料段、堆和堆疊,需要注意的是其程序識別符號和程序描述符是不會改變的。

exec 函式族提供了乙個在程序中啟動另乙個程式執行的方法,其可以根據指定的檔名或目錄名找到可執行檔案,並用它來取代原呼叫程序的資料段、**段和堆疊段,在執行完之後,原呼叫程序的內容除了程序號外,其他全部被新的程序替換了。

在 linux 中通常會在如下兩種情況下呼叫 exec 函式族:

對 exec 系列函式的標準呼叫格式說明如下:

#include

intexecl

(const

char

*path,

const

char

*arg,..

.);int

execv

(const

char

*path,

char

*const ar**)

;int

execle

(const

char

*path,

const

char

*arg,..

.,char

*const envp)

;int

execlp

(const

char

*file,

const

char

*arg,..

.);int

execvp

(const

char

*file,

char

*const ar**)

;int

execvpe

(const

char

*file,

char

*const ar**,

char

*const envp)

;

如果這6個函式呼叫成功則沒有返回值,如果出錯則返回「-1」, 對其引數說明如下。

事實上,這6個函式都是 exec 系列函式經過包裝的庫函式,它們的作用是根據指定的檔名找到可執行檔案,並用它來取代呼叫程序的內容,就是在呼叫程序內部執行乙個可執行檔案。這裡的可執行檔案既可以是二進位制檔案,也可以是任何 linux 下可執行的指令碼檔案。

對 exec 系列函式的主要區別說明如下:

execl、execel 和 execlp 這三個函式用於表示命令行引數的一般方式是:

char

*arg0,

char

*arg1,..

.char

*argn,

(char*)

0

需要注意的是在命令列引數中使用了乙個將常數 0 強制轉換為空指標的字元指標來作為結尾,如果不進行強制轉換,其會被解釋為整型引數,從而出現錯誤。

execle 和 execve 函式中的最後乙個字元 「e」表示可以向新的程序傳遞乙個環境變數 envp,對其命令引數說明如下:

char

*arg0,

char

*arg1,..

.char

*argn,

(char*)

0,char

*envp[

]

環境變數指的是一組值,這組值從 linux 使用者登入後就一直存在,很多應用程式需要依靠它來確定系統的一些細節,最常見的環境變數是路徑(path),其指明了應到**去搜尋相應的應用程式,如/bin;另外 home 也是比較常見的環境變數,其指明了使用者在系統中的個人目錄;環境變數一般以字串 「***=***" 的形式存在,*** 表示變數名,*** 表示變數的值。

exec 函式族之間的區別和比較。

函式名pathname引數

filename引數

參數列ar**

environ引數

envp

execl函式●●

●execlp函式●●

●execle函式●●

●execv函式●●

●execvp函式●●

●execve函式●●

●在 exec 系列函式族執行之後,不僅程序的描述符、識別符號沒有發生改變,該程序的如下特徵也將保留:

1. 使用 excel 函式呼叫 date 命令

2. 使用 execlp 函式呼叫 ls 命令

3. 使用 execv 函式呼叫 ls 命令

4. 在父程序和子程序中分別使用 execl 函式

Linux 執行程序實時監控pidstat命令詳解

pidstat主要用於監控全部或指定程序占用系統資源的情況,如cpu,記憶體 裝置io 任務切換 執行緒等。pidstat首次執行時顯示自系統啟動開始的各項統計資訊,之後執行pidstat將顯示自上次執行該命令以後的統計資訊。使用者可以通過指定統計的次數和時間來獲得所需的統計資訊。安裝 yum in...

Linux 執行程序實時監控pidstat命令詳解

pidstat主要用於監控全部或指定程序占用系統資源的情況,如cpu,記憶體 裝置io 任務切換 執行緒等。pidstat首次執行時顯示自系統啟動開始的各項統計資訊,之後執行pidstat將顯示自上次執行該命令以後的統計資訊。使用者可以通過指定統計的次數和時間來獲得所需的統計資訊。預設引數 執行pi...

linux 檢視執行程序所在目錄

通過ps 及top 命令檢視程序資訊時,只能查到相對路徑 查不到的程序的詳細資訊,如絕對路徑 等。這時,我們需要通過以下的方法來檢視程序的詳細資訊 linux 在啟動乙個程序時,系統會在 proc 下建立乙個以pid命名的資料夾,在該資料夾下會有我們的程序的資訊,其中包括乙個名為exe的檔案即記錄了...