2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4
目錄 Contents fork 介紹 Beaglebone exec* 介紹 Beaglebone 實作 Beaglebone
01 fork 介紹 fork 功能:創建一個新的Process。 呼叫 fork 的 Process,也就是正本,其 fork 函式的回傳值會是複本的 Process ID。而複本的 fork 的回傳值一定是 0。 標頭檔: include<unistd.h> 參數: pid_t fork(void); 返回值: Parent Process > 0 Child Process = 0 Error = -1
fork 介紹 程序開始 執行fork 執行父進程邏輯 等待子進程結束 執行子進程邏輯 結束 子進程殭屍可能產生 回收子進程 從頭開始執行 fork pid > 0 fork pid = 0 no wait wait 通知父進程
02 exce 介紹 exec系列函數(execl、execlp、execle、execv、execvp) 功能: 用exec函數可以把當前進程替換為一個新進程,且新進程與原進程有相同的PID。 int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execle(const char *path, const char *arg, ..., char * const envp[]); 參數: path參數表示你要啟動程式的名稱包括路徑名。 arg參數表示啟動程式所帶的參數,一般第一個參數為要執行命令名,不是帶路徑且arg必須以NULL結束。 返回值成功返回0,失敗返回-1。
exec 介紹 2-1 帶l 的exec函數: execl、execlp、execle,表示後邊的參數以可變參數的形式給出,且都以一個空指標結束。
exec 介紹 2-2 帶p的exec函數: execlp、execvp,表示第一個參數path不用輸入完整路徑,只有給出命令名即可,它會在環境變數PATH當中查找命令。
exec 介紹 2-3 不帶 l 的exec函數: execv、execvp表示命令所需的參數以char *arg[]形式給出且arg最後一個元素必須是NULL。
exec 介紹 2-4 帶e的exec函數: execle將環境變數傳遞給需要替換的進程,也就是可以設定 environment variable。
exec 介紹
實作 利用fork產生出一個Parent Process和一個Chile Process,並在Child Process裡面呼叫execlp函數來使用”ls -l”的功能。
Thanks 作業系統實習 Operating Systems