管道是指用來(lái)連接一個(gè)讀進(jìn)程和一個(gè)寫進(jìn)程以實(shí)現(xiàn)它們之間通信的共享文件,也稱為管道文件。Linux實(shí)現(xiàn)了兩種管道,一種是無(wú)名管道,另一種是命名管道。無(wú)名管道沒有磁盤節(jié)點(diǎn)。它只作為一個(gè)內(nèi)存對(duì)象存在,當(dāng)它用完時(shí)就會(huì)被銷毀。由于沒有文件名、路徑或磁盤節(jié)點(diǎn),因此沒有顯式打開無(wú)名管道的過程。實(shí)際上,它在創(chuàng)建時(shí)會(huì)自動(dòng)打開,并生成內(nèi)存inode節(jié)點(diǎn)、dentry目錄項(xiàng)對(duì)象和兩個(gè)文件結(jié)構(gòu)對(duì)象(一個(gè)讀操作和一個(gè)寫操作)。

它們的內(nèi)存對(duì)象與普通文件一致,所以讀寫操作使用同一個(gè)文件接口,當(dāng)然讀寫功能是專用的。由于無(wú)法顯式打開無(wú)名管道,因此只能通過在兩個(gè)進(jìn)程之間與繼承父進(jìn)程的父子進(jìn)程、兄弟進(jìn)程或其他相關(guān)管道文件對(duì)象進(jìn)行通信來(lái)使用無(wú)名管道。命名管道具有文件名和磁盤I節(jié)點(diǎn),因此可以由任意兩個(gè)或多個(gè)進(jìn)程用于通信。其使用方法與普通檔案相似,遵循打開、讀取、寫入、關(guān)閉的過程。但是,讀寫的內(nèi)部實(shí)現(xiàn)與普通文件不同,與無(wú)名管道的內(nèi)部實(shí)現(xiàn)相同。