![]() |
|
Linux下進程間通信方式-管道 |
|
本文關鍵字: linux 管道通信,linux 進程通信方式 ,無名管道,有名管道 管道是Linux中進程間通信的一種方式,它把一個程序的輸出直接連接到另一個程序的輸入。Linux的管道主要包括兩種:無名管道和有名管道。 無名管道是Linux中管道通信的一種原始方法,如圖1(左)所示,它具有如下特點: ● 它只能用于具有親緣關系的進程之間的通信(也就是父子進程或者兄弟進程之間)。 ● 它是一個半雙工的通信模式,具有固定的讀端和寫端。 ● 管道也可以看成是一種特殊的文件,對于它的讀寫也可以使用普通的read()、write()等函數。但是它不是普通的文件,并不屬于其他任何文件系統,并且只存在于內存中。 有名管道是對無名管道的一種改進,如圖1(右)所示,它具有如下特點: ● 它可以使互不相關的兩個進程實現彼此通信。 ● 該管道可以通過路徑名來指出,并且在文件系統中是可見的。在建立了管道之后,兩個進程就可以把它當做普通文件一樣進行讀寫操作,使用非常方便。 ● FIFO嚴格地遵循先進先出規則,對管道及FIFO的讀總是從開始處返回數據,對它們的寫則是把數據添加到末尾,它們不支持如lseek()等文件定位操作。
本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》 熱點鏈接:
1、Linux下進程間通信 |