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

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