程序程式設計
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.程序的概念 傳統的程式本是一組指令的集合,是乙個靜態實體,無法描述程式在記憶體中的執 況,也就不能如實反映程式併發執行過程的特徵,為了深刻描述程式動態執行過程的性質,人們就引入了 程序 的...