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