Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

2 目錄 Contents pipe 介紹 Beaglebone pipe 範例 Beaglebone 實作 Beaglebone

3 1-1 pipe 介紹 管線命令 (pipe) 功能:
在執行命令列時,有時候會下達多個指令,會取得想要的資料及格式,所以我們會需要將這些指令結合成管線命令,把前一項的輸出結果直接再代入第二個命令。通常用「|」這個符號的表示連結一個命令的輸出與輸入。 舉例: 「 ls | more 」 shell會先執行ls指令,再將ls的輸出結果(standard output,簡稱STDOUT)當作more的輸入(standard input,簡稱STDIN),執行過程如以下的圖:

4 1-2 pipe 介紹 管線命令 (pipe) 注意: 接在「|」後面的指令必須是要可以接收 STDIN 才行 (ex. more)
管線命令僅處理standard output,會忽略standard error output的訊息,意即僅能接收前一個命令傳送的正確訊息。 standard output 指令大致分為六大類: 擷取命令:cut、grep 排序命令:sort、wc、uniq 雙向重導向:tee 字元轉換命令:tr、col、join、paste、expand 分割命令:split 參數代換:xargs 補充資料:

5 pipe 介紹 1-3 管線命令 (pipe) 檔案描述符 (file descriptor)、標準輸入輸出 (Standard Input Output) 0:Standard Input (STDIN),預設為鍵盤輸入值 1:Standard Output (STDOUT),預設為終端機螢幕顯示輸出 2:Standard Error (STDERR),預設為終端機螢幕顯示輸出 補充資料:

6 2-1 pipe 範例 pipe 範例 1 標頭檔: #include <unistd.h> 參數:
int pipe(int fd[2]); 說明: fd[0] 為管道裡的讀取端 fd[1] 為管道裡的寫入端

7 2-2 pipe 範例 pipe 範例 2 dup & dup2: 功能:複製file descriptor。
dup:返回新的file descriptor (沒有用的file descriptor最小的編號)。 dup2:可以讓用戶指定返回的file descriptor的值,如果需要,則首先接近newfd的值,通常用來重新打開或者重定向一個file descriptor 。 在此程式是讓pipe去取代外部程式的標準輸出(standard output),然後讓主程式用pipe接收。 標頭檔: #include <unistd.h> 函數: int dup(int oldfd); int dup2(int oldfd, int newfd);

8 實作 參考第一個範例,在parent和child的process各自產生一個1~10的亂數,透過pipe的方式將child裡面的亂數值輸出給parent裡面,並在parent process裡面將兩個亂數值相加在printf出來。 亂數: 標頭檔: #include <time.h> #include <sys/wait.h> 函數: int rand1; srand(seed); //seed->time(0) //seed->time(0)+getpid() rand1 = rand() % RANGE ; Ex. 取 1-10 的亂數 a=(rand() % 10) +1 取 的亂數 a=(rand() % 100) +1 取 的亂數 a=(rand() % 901) +100

9 Thanks 作業系統實習 Operating Systems


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

Similar presentations


Ads by Google