Presentation is loading. Please wait.

Presentation is loading. Please wait.

2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4.

Similar presentations


Presentation on theme: "2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4."— Presentation transcript:

1 2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4

2 目錄 Contents fork 介紹 Beaglebone exec* 介紹 Beaglebone 實作 Beaglebone

3 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

4 fork 介紹 程序開始 執行fork 執行父進程邏輯 等待子進程結束 執行子進程邏輯 結束 子進程殭屍可能產生 回收子進程 從頭開始執行
fork pid > 0 fork pid = 0 no wait wait 通知父進程

5 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。

6 exec 介紹 2-1 帶l 的exec函數: execl、execlp、execle,表示後邊的參數以可變參數的形式給出,且都以一個空指標結束。

7 exec 介紹 2-2 帶p的exec函數: execlp、execvp,表示第一個參數path不用輸入完整路徑,只有給出命令名即可,它會在環境變數PATH當中查找命令。

8 exec 介紹 2-3 不帶 l 的exec函數: execv、execvp表示命令所需的參數以char *arg[]形式給出且arg最後一個元素必須是NULL。

9 exec 介紹 2-4 帶e的exec函數: execle將環境變數傳遞給需要替換的進程,也就是可以設定 environment variable。

10 exec 介紹

11 實作 利用fork產生出一個Parent Process和一個Chile Process,並在Child Process裡面呼叫execlp函數來使用”ls -l”的功能。

12 Thanks 作業系統實習 Operating Systems


Download ppt "2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4."

Similar presentations


Ads by Google