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

2021-10-08 06:26:40 字數 1290 閱讀 8456

一般在使用過程中,通常通過fork建立乙個新的程序都是為了立即執行新的、不同的程式,通過呼叫exec函式族建立新的位址空間,並載入新的程式。

最終通過exit()系統呼叫退出執行,提到這個函式可以想到與之相近的幾個函式,如下:

exit() 終結當前程序並將其所占用的資源釋放掉。

_exit()和_exit()終結當前程序但不會釋放所占用的資源。

return 結束當前函式,並且帶出返回值。

exec函式族的原型如下:

int

execl

(const

char

*path,

const

char

*arg,..

.);int

execlp

(const

char

*file,

const

char

*arg,..

.);int

execle

(const

char

*path,

const

char

*arg,..

.,char

*const envp)

;int

execv

(const

char

*path,

char

*const ar**)

;int

execvp

(const

char

*file,

char

*const ar**)

;int

execvpe

(const

char

*file,

char

*const ar**,

char

*const envp)

;

以上函式簡單可以理解為使用乙個新的程序來替換掉當前的程序。

#include

#include

#include

/**列印時戳 date+%s

*/int

main

(int argc,

char

*ar**)

puts

("end");

return0;

}

其他函式用法與以上函式的用法差不多,就不在這裡贅述了。

linux中的系統呼叫

linux 0.11 中的close api解析 通常情況下,呼叫系統呼叫和呼叫普通自定義函式在 上並沒有什麼區別,但呼叫後發生的事情有很大不同。呼叫自定義函式是通過call指令直接跳轉到該函式的位址,繼續執行。呼叫系統呼叫是呼叫系統庫中為該系統呼叫編寫的乙個介面函式,即api。而api要做的就是去...

Linux中的系統呼叫

當使用者態的程序呼叫乙個系統呼叫時,cpu切換到核心態並開始執行乙個核心函式。核心實現了許多不同的系統呼叫,程序必須傳遞乙個名為系統呼叫號 system call number 的引數來識別所需的系統呼叫,eax暫存器就用作此目的。所有的系統呼叫均返回乙個整數值。系統處理程式與其他異常處理程式的結構...

Linux中的wait系統呼叫

系統中的殭屍程序都要由wait系統呼叫來 下面就通過實戰看一看wait的具體用法 wait的函式原型是 include 提供型別pid t的定義 include pid t wait int status 程序一旦呼叫了wait,就立即阻塞自己,由wait自動分析是否當前程序的某個子程序已經退出,如...