国产午夜福利在线观看红一片,久久精品国产再热青青青,又硬又粗又大一区二区三区视频,中文字幕乱码免费,久久超碰97文字幕 ,中国精学生妹品射精久久

最新更新最新專題

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

linux管道ppt下載

素材大。
1 MB
素材授權(quán):
免費(fèi)下載
素材格式:
.ppt
素材上傳:
lipeier
上傳時(shí)間:
2020-01-04
素材編號(hào):
248892
素材類別:
課件PPT

素材預(yù)覽

linux管道ppt

這是linux管道ppt,包括了重定向,管道,管道通信,重定向標(biāo)準(zhǔn)I/O,管道系統(tǒng)調(diào)用,管道—單向Vs雙向等內(nèi)容,歡迎點(diǎn)擊下載。

linux管道ppt是由紅軟PPT免費(fèi)下載網(wǎng)推薦的一款課件PPT類型的PowerPoint.

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

linux基礎(chǔ)ppt:這是linux基礎(chǔ)ppt,包括了什么是linux,Linux為什么那么穩(wěn)定,如何學(xué)習(xí)linux,Linux的開機(jī)流程,LINUX 各個(gè)目錄的作用及內(nèi)容,lib標(biāo)準(zhǔn)程序設(shè)計(jì)庫(kù)(動(dòng)態(tài)鏈接共享庫(kù))等內(nèi)容,歡迎點(diǎn)擊下載。

linux shell編程ppt:這是linux shell編程ppt,包括了Linux shell基本介紹,Linux基本命令,Shell的語(yǔ)法結(jié)構(gòu)等內(nèi)容,歡迎點(diǎn)擊下載。

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

PPT分類Classification

Copyright:2009-2024 紅軟網(wǎng) rsdown.cn 聯(lián)系郵箱:rsdown@163.com

湘ICP備2024053236號(hào)-1