管道就是指用于連接一個讀進(jìn)程和一個寫進(jìn)程,以實現(xiàn)它們之間通信的共享文件,又稱pipe文件。Linux中實現(xiàn)了兩種管道,一種是無名管道,一種是命名管道。無名管道沒有磁盤節(jié)點,它僅作為一個內(nèi)存對象存在,用完后就銷毀了。因為沒有文件名和路徑,也沒有磁盤節(jié)點,因此無名管道沒有顯式的打開過程,實際上它是在創(chuàng)建時就自動打開的,并且生成內(nèi)存inode節(jié)點、dentry目錄項對象和兩個文件結(jié)構(gòu)對象(一個讀操作、一個寫操作),其內(nèi)存對象和普通文件的一致,所以讀寫操作使用的是同樣的文件接口,當(dāng)然讀寫函數(shù)是專用的。因為無名管道不能顯式打開,因此只能由父子進(jìn)程之間、兄弟進(jìn)程之間或者其他有親緣關(guān)系并且都繼承了祖程的管道文件對象的兩個進(jìn)程間通信使用。命名管道是有文件名和磁盤i節(jié)點的,因此可由任意兩個或多個進(jìn)程間通信使用,它的使用方法和普通文件類似,都遵循打開、讀、寫、關(guān)閉這樣的過程,但是讀寫的內(nèi)部實現(xiàn)和普通文件不同,而和無名管道一樣。