資料介紹
8.2.1 管道概述
本書在第2章中介紹“ps”的命令時提到過管道,當時指出了管道是Linux中一種很重要的通信方式,它是把一個程序的輸出直接連接到另一個程序的輸入,這里仍以第2章中的“ps –ef | grep ntp”為例,描述管道的通信過程,如圖8.2所示。

圖8.2 管道的通信過程
管道是Linux中進程間通信的一種方式。這里所說的管道主要指無名管道,它具有如下特點。
n 它只能用于具有親緣關系的進程之間的通信(也就是父子進程或者兄弟進程之間)。
n 它是一個半雙工的通信模式,具有固定的讀端和寫端。
n 管道也可以看成是一種特殊的文件,對于它的讀寫也可以使用普通的read()和write()等函數。但是它不是普通的文件,并不屬于其他任何文件系統,并且只存在于內核的內存空間中。
8.2.2 管道系統調用
1.管道創建與關閉說明
管道是基于文件描述符的通信方式,當一個管道建立時,它會創建兩個文件描述符fds[0]和fds[1],其中fds[0]固定用于讀管道,而fd[1]固定用于寫管道,如圖8.3所示,這樣就構成了一個半雙工的通道。

圖8.3 Linux中管道與文件描述符的關系
管道關閉時只需將這兩個文件描述符關閉即可,可使用普通的close()函數逐個關閉各個文件描述符。
注意當一個管道共享多對文件描述符時,若將其中的一對讀寫文件描述符都刪除,則該管道就失效。
2.管道創建函數
創建管道可以通過調用pipe()來實現,表8.1列出了pipe()函數的語法要點。
表8.1 pipe()函數語法要點
所需頭文件#include 《unistd.h》
函數原型int pipe(int fd[2])
函數傳入值fd[2]:管道的兩個文件描述符,之后就可以直接操作這兩個文件描述符
函數返回值成功:0
出錯:-1
本書在第2章中介紹“ps”的命令時提到過管道,當時指出了管道是Linux中一種很重要的通信方式,它是把一個程序的輸出直接連接到另一個程序的輸入,這里仍以第2章中的“ps –ef | grep ntp”為例,描述管道的通信過程,如圖8.2所示。

圖8.2 管道的通信過程
管道是Linux中進程間通信的一種方式。這里所說的管道主要指無名管道,它具有如下特點。
n 它只能用于具有親緣關系的進程之間的通信(也就是父子進程或者兄弟進程之間)。
n 它是一個半雙工的通信模式,具有固定的讀端和寫端。
n 管道也可以看成是一種特殊的文件,對于它的讀寫也可以使用普通的read()和write()等函數。但是它不是普通的文件,并不屬于其他任何文件系統,并且只存在于內核的內存空間中。
8.2.2 管道系統調用
1.管道創建與關閉說明
管道是基于文件描述符的通信方式,當一個管道建立時,它會創建兩個文件描述符fds[0]和fds[1],其中fds[0]固定用于讀管道,而fd[1]固定用于寫管道,如圖8.3所示,這樣就構成了一個半雙工的通道。

圖8.3 Linux中管道與文件描述符的關系
管道關閉時只需將這兩個文件描述符關閉即可,可使用普通的close()函數逐個關閉各個文件描述符。
注意當一個管道共享多對文件描述符時,若將其中的一對讀寫文件描述符都刪除,則該管道就失效。
2.管道創建函數
創建管道可以通過調用pipe()來實現,表8.1列出了pipe()函數的語法要點。
表8.1 pipe()函數語法要點
所需頭文件#include 《unistd.h》
函數原型int pipe(int fd[2])
函數傳入值fd[2]:管道的兩個文件描述符,之后就可以直接操作這兩個文件描述符
函數返回值成功:0
出錯:-1
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 談談嵌入式系統中多進程設計與進程通信
- 嵌入式Linux進程 -進程間通信
- 串口通信之讀取與發送及LabView文件下載 184次下載
- TD-SCDMA無線通信技術的演變進程與其他技術比較和系統結構介紹 21次下載
- Linux系統管道和有名管道的通信機制解析 0次下載
- linux操作系統下的進程通信 0次下載
- 進程間通信之Linux下進程間通信概述 0次下載
- 進程間通信之管道通信實驗內容分析 1次下載
- 進程間通信之使用信號詳解 0次下載
- 進程間通信之信號量淺析 0次下載
- 進程間通信之共享內存 1次下載
- 通信電纜配線管道圖集 YD5062-98
- 通信管道與通道工程設計規范 YD 5007—2003
- 通信管道與通道工程設計規范
- 通信管道設計規范
- Linux下進程通信的方法 749次閱讀
- GIS管道精密對接設備機械系統的設計與研究 652次閱讀
- SoC核間通信的實現機制之mailbox中斷 1855次閱讀
- 從進程模型轉換成線程模型的優缺點 476次閱讀
- Jacinto 7核間通信解決方案 1226次閱讀
- Linux管道和FIFO應用筆記 747次閱讀
- 闡述匿名管道和命名管道 1258次閱讀
- 進程間通信的實現方式 771次閱讀
- 簡單了解一下進程間通信的幾種實現方式 1702次閱讀
- Linux進程間通信方法之管道 1997次閱讀
- 鴻蒙內核進程間為何要通訊? 2759次閱讀
- 淺談進程之間的通信方式 2834次閱讀
- Linux中的管道和命名管道介紹 4053次閱讀
- Linux進程的概念及進程通信的應用場景 6729次閱讀
- 進程間與線程間的通信方式 8945次閱讀
下載排行
本周
- 1QW2893應急燈專用檢測芯片
- 590.40 KB | 1次下載 | 免費
- 2低功耗藍牙BLE透傳模塊HM-BT4531的技術規格與應用指南
- 1.40 MB | 1次下載 | 免費
- 3PC2570低Iq 理想二極管控制芯片中文資料
- 1.56 MB | 1次下載 | 免費
- 4AG32VH 系列應用指南
- 0.60 MB | 1次下載 | 免費
- 5Claroty-2024年全球CPS安全狀況:中斷對業務的影響
- 3.70 MB | 1次下載 | 免費
- 6stm32g070數據手冊和使用手冊
- 12.06 MB | 次下載 | 免費
- 7FS312B USB的PD和OC快充協議電壓誘騙控制器中文手冊
- 1.35 MB | 次下載 | 免費
- 8SY8201矽力杰高效率快速響應,1A, 27V輸入 同步降壓調節器
- 510.16 KB | 次下載 | 免費
本月
- 1AI智能眼鏡產業鏈分析
- 4.43 MB | 471次下載 | 免費
- 2蘇泊爾電磁爐線路的電路原理圖資料合集
- 2.02 MB | 300次下載 | 5 積分
- 3貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 95次下載 | 1 積分
- 4長虹液晶電視R-HS310B-5HF01的電源板電路原理圖
- 0.46 MB | 91次下載 | 5 積分
- 5涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 6錦銳科技CA51F2 SDK開發包
- 24.06 MB | 43次下載 | 1 積分
- 7AO4803A雙P通道增強型場效應晶體管的數據手冊
- 0.11 MB | 28次下載 | 2 積分
- 8錦銳CA51F005 SDK開發包
- 19.47 MB | 19次下載 | 1 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191388次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論