久久无码高潮喷水抽搐,极品馒头泬19p,久久人人爽精品玩人妻av,精品国产成人国产在线视,精品视频一区二区三区在线观看

最新更新最新專題

您的位置:首頁 > ppt下載 > PPT課件 > 課件PPT > linux管道ppt

linux管道ppt下載

素材大小:
1 MB
素材授權:
免費下載
素材格式:
.ppt
素材上傳:
lipeier
上傳時間:
2020-01-04
素材編號:
248892
素材類別:
課件PPT

素材預覽

linux管道ppt

這是linux管道ppt,包括了重定向,管道,管道通信,重定向標準I/O,管道系統(tǒng)調用,管道—單向Vs雙向等內容,歡迎點擊下載。

linux管道ppt是由紅軟PPT免費下載網推薦的一款課件PPT類型的PowerPoint.

Linux管道通信 高文宇 gwy@gdcc.edu.cn Contents 重定向 管道 管道通信 重定向 “>”--標準輸出重定向 “>>”--標準輸出重定向,追加方式 “2>”--出錯信息重定向 “<”--標準輸入重定向 重定向標準I/O Linux shell(比如 Bash)接收或發(fā)送序列和字符串流 形式的輸入或輸出。每個字符都獨立于與之相鄰的字符。字符沒有被組織成結構化記錄或固定大小的塊。不管實際的字符串流進入或來自文件、鍵盤、顯示窗口或其他 I/O 設備,都使用文件 I/O 技術來訪問流。Linux shell 使用 3 種標準的 I/O 流,每種流都與一個文件描述符相關聯: stdout 是標準輸出流,它顯示來自命令的輸出。它的文件描述符為 1。 stderr 是標準錯誤流,它顯示來自命令的錯誤輸出。它的文件描述符為 2。 stdin 是標準輸入流,它為命令提供輸入。它的文件描述符為 0。 輸入流通常通過終端擊鍵為程序提供輸入。輸出流通常向終端輸出文本字符。最初的終端是 ASCII 打字機或顯示終端,但現在更多是指圖形桌面上的文本窗口。 重定向輸出 可以通過兩種方法將輸出重定向到文件: n> 將輸出從文件描述符 n 重定向到文件。用戶必須具有該文件的寫權限。如果該文件不存在,將創(chuàng)建它。如果該文件已經存在,通常將覆蓋所有現有內容,并且沒有任何警告。 n>> 還可以將輸出從文件描述符 n 重定向到一個文件中。這里也一樣要求用戶具有該文件的寫權限。如果該文件不存在,將創(chuàng)建它。如果該文件已經存在,輸出將附加到現有的內容后面。 在 n> 或 n>> 中的 n 引用文件描述符。如果省略它,將執(zhí)行標準輸出。 重定向輸出 在某些情況下,用戶可能想要將標準輸出和標準錯誤都重定向到一個文件中。這通常為自動進程或后臺作業(yè)而執(zhí)行的,以便以后可以查看輸出。使用 &> 或 &>> 同時將標準輸出和標準錯誤重定向到同一個文件中。另一種方法是,首先重定向文件描述符 n,然后使用 m>&n 或 m>>&n 將文件描述符 m 重定向到同一個文件。例如, command 2>&1 >output.txt 不同于 command >output.txt 2>&1 在第一種情況中,stderr 被重定向到 stdout 的當前位置,然后在將 stdout 重定向到 output.txt,但第二次重定向僅影響 stdout,不影響 stderr。在第二種情況中,stderr 被重定向到 stdout 的當前位置,即 output.txt。我們在清單 5 中顯示了這些重定向。注意,在最后一個命令中先重定向標準錯誤在重定向標準輸出,所以標準錯誤輸出仍然打印在終端窗口中。 重定向輸入 就像可以重定向 stdout 和 stderr 流一樣,也可以使用 < 操作符從文件重定向 stdin。 管道 “ | ”—管道 將一個程序或命令的輸出作為另一個程序或命令的輸入,有兩種方法,一種是通過一個臨時文件將兩個命令或程序結合在一起;另一種是Linux所提供的管道功能。這種方法比前一種方法更好。 管道可以把一系列命令連接起來,這意味著第一個命令的輸出會作為第二個命令的輸入通過管道傳給第二個命令,第二個命令的輸出又會作為第三個命令的輸入,以此類推。顯示在屏幕上的是管道行中最后一個命令的輸出(如果命令行中未使用輸出重定向)。 通過使用管道符“|”來建立一個管道行。 管道 利用一個管道 # rpm -qa|grep licq 這條命令使用一個管道符“|”建立了一個管道。管道將rpm -qa命令的輸出(包括系統(tǒng)中所有安裝的RPM包) 作為grep命令的輸入,從而列出帶有l(wèi)icq字符的RPM包來。 利用多個管道 # cat /etc/passwd | grep /bin/bash | wc -l 這條命令使用了兩個管道,利用第一個管道將cat命令(顯示passwd文件的內容)的輸出送給grep命令,grep命令找出含有“/bin/bash”的所有行;第二個管道將grep的輸入送給wc命令,wc命令統(tǒng)計出輸入中的行數。這個命令的功能在于找出系統(tǒng)中有多少個用戶使用bash。 Unix管道 為了完成一項任務,在兩個或多個進程進行合作時間,必定會發(fā)生數據共享。即便信號在其處理異常事件或者錯誤的時候非常有用,也完全不適合從一個進程到另一個進程傳輸大量的信息。一種解決這個問題的方法是進程共享文件,因為沒有任何限制來阻止若干進程同時讀寫同一個文件。但是,這可能是一種低效的方法,而且不得不小心避免進程間競爭的問題。 為了解決這一問題,UNIX提供了一個稱為管道的概念。管道通常被用作單向的通信管道,該信道將一個進程與另一個進程連接在一起,同時也是UNIX文件概念的另一個推廣。正如我們將要看到的,進程可以通過write系統(tǒng)調用來向管道發(fā)送數據,而另一端的進程也可以通過使用read來接收數據。 管道系統(tǒng)調用 在一個程序內部,可以通過一個叫pipe的系統(tǒng)調用來創(chuàng)建管道。如果成功,該調用返回兩個文件描述符:一個向管道寫入,一個從管道讀出。Pipe定義如下: 用法: #include int pipe(int filedes[2]); filedes是一個有兩個成員的整型數組,用來保存標識管道的文件描述符。如果這個調用成功。filedes[0]將用來從管道讀出數據。同時filedes[1]用來向管道寫入數據。 pipe調用有可能失敗并返回-1。當這個調用可能導致比每個用戶進程限制更多的文件描述符被打開(在此情況下,errno將設為EMFILE),或者內核的打開文件表溢出時(error將設為ENFILE),都會發(fā)生錯誤。 管道例程 創(chuàng)建了一個管道,寫入三條消息,然后把它們讀出來。 注意,消息讀出的順序與它們寫入的順序相同。管道按照先進先出(FIFO)來處理數據。換言之,第一個放入管道的消息在另一端也是第一個被讀出來的。這個順序不能更改,因為lseek對管道來說是無效的。 盡管在例子中讀寫管道時使用了相同大小的數據塊,但實際上一個進程并不需要按照寫入時數據塊的大小從管道中讀出這些數據。例如,一個管道可以依次寫出512字節(jié)的數據塊,然后每次只讀出一個字符。但是使用固定大小的數據塊是有好處的,這一點將在后面說明。 Pipe和fork 當管道和fork 系統(tǒng)調用一起使用的時候,才真正體現了它的價值。正因為通過fork調用生成的子進程將繼承父進程的文件描述符,才使得子進程可以通過由父進程生成的管道與父進程通信。下面這個例子顯示了這一點。父進程創(chuàng)建了一個管道,并且調用fork生成一個子進程。然后,子進程向父進程寫入一串消息。 管道例程(2) pipe 管道—單向Vs雙向 圖7.2描述了這個例子的大概過程。它展示了管道連接兩個進程的方式。正如你看到的,父進程和子進程都有兩個打開的文件描述符,允許讀寫管道。因此,任何一個進程都可以向文件描述符p[1]寫入,并且從p[0]中讀出。這里存在一個問題,管道其實是強制用做單向的通信信道,而它本身是允許雙向通信的。如果兩個進程都同時地讀寫管道,結果將會發(fā)生混淆。 為了避免這一點,習慣上每個進程要么只讀管道要么只寫管道,并且關閉它不需要的文件描述符。事實上,程序為了避免在發(fā)送進程關閉其寫入端時發(fā)生問題,就需要這樣做,在7.1.4節(jié)將解釋原因。迄今所有的例子之所以都可以工作,是因為接收進程確切地知道發(fā)送過來的數據到底有多少。下面的例子將展示這個問題的完整解決方案: 管道例程(3) Pipe 再見 再見 vf9紅軟基地

linux基礎ppt:這是linux基礎ppt,包括了什么是linux,Linux為什么那么穩(wěn)定,如何學習linux,Linux的開機流程,LINUX 各個目錄的作用及內容,lib標準程序設計庫(動態(tài)鏈接共享庫)等內容,歡迎點擊下載。

linux shell編程ppt:這是linux shell編程ppt,包括了Linux shell基本介紹,Linux基本命令,Shell的語法結構等內容,歡迎點擊下載。

linux基本命令ppt:這是linux基本命令ppt,包括了基本命令,文件和目錄操作命令,系統(tǒng)信息及運行狀態(tài)監(jiān)控,進程命令,用戶及用戶組管理命令,軟件安裝命令rpm,命令發(fā)送到后臺,關機等內容,歡迎點擊下載。

PPT分類Classification

Copyright:2009-2024 紅軟網 rsdown.cn 聯系郵箱:rsdown@163.com

湘ICP備2024053236號-1