Linux 程序程式設計

2021-07-23 23:19:07 字數 2831 閱讀 5007

程序程式設計

1、getpid

函式的作用:獲取程序的識別碼、程序號

函式的原型:pid_t  getpid(void)

返回值:目前程序的程序號

標頭檔案:#include

2、fork

函式的作用:建立乙個程序

函式的原型:pid_t  fork(void)

函式的返回值:< 0:出錯;

= 0:表示當前建立的是子程序;

>0:表示當前建立的是父程序,返回值是子程序的程序號

3、vfork

函式的作用:建立乙個新的程序

函式的原型:pid_t vfork();

特點:子程序先執行,退出,父程序才能進行;

4、execl

函式的作用:執行乙個檔案

函式的原型:int execl(const  char*path,const char *arg,…)

引數說明:path:代表檔案的路徑

arg:表示argv[0] , argv[1]

最後乙個引數以null結束

返回值:成功函式沒有返回;

出錯:-1;

5、execlp

函式的作用: execl()用來執行引數path字串所代表的目錄中找到符合引數file的檔名,找到後便執行該檔案,第二個引數是利用陣列指標來傳遞給執行檔案,最後乙個引數需要以空指標(null)結束。

函式的原型 :int execlp(const char *file, const char *arg, ...);

返回值:函式執行成功時沒有返回值,執行失敗時的返回值為-1.

6、execle

函式的作用: execl是用來執行引數path字串所代表的檔案路徑,並為新程式複製最後乙個引數所指示的環境變數。接下來的引數代表執行該檔案時傳遞過去的argv(0)、argv[1]……,最後乙個引數必須用空指標(null)作結束

函式的原型:int execle(const char *path,const char *arg, ..., char * constenvp);

返回值:函式執行成功時沒有返回值,執行失敗時的返回值為-1

7、execv

函式的作用: execv()用來執行引數filename字串所代表的檔案路徑,第二個引數是利用陣列指標來傳遞給執行檔案,最後乙個引數則為傳遞給執行檔案的新環境變數陣列。

函式的原型: int execv(const char *path,char *const argv);

返回值:函式執行成功時沒有返回值,執行失敗時的返回值為-1.

8、execvp

函式的作用: execvp()用來執行引數path字串所代表的目錄中找到符合引數file的檔名,找到後便執行該檔案,第二個引數是利用陣列指標來傳遞給執行檔案。

函式的原型: int execvp(const char *file, char *const argv);

返回值:函式執行成功時沒有返回值,執行失敗時的返回值為-1.

9、execve

函式的作用: execve()用來執行引數filename字串所代表的檔案路徑,第二個引數是利用陣列指標來傳遞給執行檔案,並且需要以空指標(null)結束,最後乙個引數則為傳遞給執行檔案的新環境變數陣列。

函式的原型:int execve(const char *filename, char *const argv[ ], char *const envp);

返回值:函式執行成功時沒有返回值,執行失敗時的返回值為-1.

10、system

函式的作用:執行乙個命令

函式的原型:int  system(const char*string)

11、waitpid

函式的作用:等待退出,等待訊號,或者指定的程序結束

函式的原型:pid_t waitpid(pid_t pid, int *status, int options)

函式的引數:pid < -1:等待程序pid絕對值得任何子程序

pid = -1:等待任何子程序,相當於wait

pid = 0 :等待程序組識別碼與目前程序相同的任何子程序

pid > 0 :等待程序號為pid的子程序退出

options:

wnohang 如果沒有子程序退出,馬上返回不等待

wuntraced:如果子程序進入暫停執行狀態,馬上返回

返回值:如果執行成功,返回子程序

失敗:-1

12、exit

函式的作用:正常結束程式

函式的原型:void exit(int status)

返回值:無

程序程式設計學習總結:

1、程序與程式的區別

(1)程序是動態的,程式是靜態的

(2)程序是暫時的,程式是長久的

(3)程序與程式組成不同:程序的組成包括程式、資料和程序控制塊

(4)程序與程式的對應關係:通過多次執行,乙個程式可對應多個程序;

通過呼叫關係,乙個程序可包含多個程式;

2、什麼是死鎖?

多個程序因資源競爭而形成的一種僵局

3、建立乙個程序有幾種方法?

(1)呼叫fork()函式

(2)呼叫vfork()函式

4、fork()函式與vfork()函式有什麼區別?

fork()函式建立的子程序將父程序的資源拷貝了一遍,父子程序把所有**執行一遍

vfork()函式建立的子程序和父程序共享資料空間,不是重新拷貝

5、有哪幾種函式可以返回子程序的程序號pid?

(1)fork()函式的返回值如果》0,那麼即為子程序的程序號

(2)wait()函式成功返回值即為子程序的程序號

(3)waitpid()函式成功返回即為子程序的程序號

Linux程序程式設計

一 與程序相關的系統函式 1.getpid include 提供pid t型別的定義 include 提供函式的定義 pid t getpid void 返回值為當前程序的程序id 2.getppid include 提供pid t型別的定義 include 提供函式的定義 pid getppid ...

Linux 程序程式設計

特點 wait waitpid 殭屍程序 特點 pid t waitpid pid t pid,int status,options 使用pipe 使用方便 兩個程序中,其中乙個程序讀取管道 使用pipe函式構建父子關係,呼叫ls l grep a.out demo c int main int i...

Linux程序程式設計

程序是作業系統中最基本 最重要的概念,可以說程序是作業系統結構的基礎。作業系統上任何程式的執行都離不開程序。1.程序的概念 傳統的程式本是一組指令的集合,是乙個靜態實體,無法描述程式在記憶體中的執 況,也就不能如實反映程式併發執行過程的特徵,為了深刻描述程式動態執行過程的性質,人們就引入了 程序 的...