|  | |
| Linux下進程間通信方式-管道 | |
| 本文關鍵字: linux 管道通信,linux 進程通信方式 ,無名管道,有名管道 管道是Linux中進程間(jian)通(tong)信的一種方(fang)式,它把一個程序的輸(shu)出直(zhi)接(jie)連接(jie)到另一個程序的輸(shu)入。Linux的管道主要包(bao)括兩種:無名管道和有名管道。 無名管道(dao)是Linux中(zhong)管道(dao)通信的一種(zhong)原始方(fang)法,如(ru)圖1(左)所示,它具有(you)如(ru)下特點: ● 它只能用于具有親(qin)緣關系的(de)進程(cheng)之間(jian)的(de)通信(也(ye)就是父(fu)子(zi)進程(cheng)或者兄弟進程(cheng)之間(jian))。 ● 它(ta)是一個半雙工的(de)通信模式,具有固(gu)定的(de)讀端(duan)和寫(xie)端(duan)。   ● 管道也(ye)可以(yi)(yi)看成是一種(zhong)特(te)殊的(de)文(wen)件,對(dui)于它的(de)讀寫也(ye)可以(yi)(yi)使用普(pu)通的(de)read()、write()等函數(shu)。但是它不(bu)是普(pu)通的(de)文(wen)件,并不(bu)屬于其他任(ren)何(he)文(wen)件系(xi)統,并且只存在于內(nei)存中。 有名管道是對無名管道的(de)一種改(gai)進,如(ru)圖1(右(you))所(suo)示,它(ta)具有如(ru)下(xia)特點: ● 它可(ke)以(yi)使互不(bu)相關的兩個進程實現彼(bi)此通(tong)信。  ● 該管(guan)道可以(yi)通(tong)過路徑名來指出,并且在(zai)文件(jian)系統中是可見的。在(zai)建立(li)了管(guan)道之后,兩個進程就可以(yi)把它當做(zuo)普通(tong)文件(jian)一(yi)樣(yang)進行讀(du)寫操作,使用非常(chang)方便。 ● FIFO嚴格地遵(zun)循(xun)先(xian)進先(xian)出規(gui)則,對管道及FIFO的(de)讀總是從(cong)開始處返回(hui)數據,對它們(men)的(de)寫(xie)則是把數據添(tian)加到末尾,它們(men)不支持如lseek()等文件定位(wei)操作。 
 本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》 熱(re)點鏈接:  
         1、Linux下進程間通信 |