產(chǎn)品詳情





數(shù)據(jù)的讀出和寫入:一個(gè)進(jìn)程向管道中寫的內(nèi)容被管道另一端的進(jìn)程讀出。寫入的內(nèi)容每次都添加在管道緩沖良的末尾,并且每次都是從緩沖良的頭安讀出數(shù)據(jù)。管道的實(shí)現(xiàn)安制,管道就是指用于連接一個(gè)讀進(jìn)程和一個(gè)寫進(jìn)程,以實(shí)現(xiàn)它們之間通信的共享文件,又稱pipe文件。Linux中實(shí)現(xiàn)了兩種管道,一種是無名管道,一種是命名管道。




無名管道沒有磁盤節(jié)點(diǎn),它僅作為一個(gè)內(nèi)存對(duì)象存在,用完后就銷毀了。因?yàn)闆]有文件名和路徑,也沒有磁盤節(jié)點(diǎn),因此無名管道沒有顯式的打開過程,實(shí)際上它是在創(chuàng)建時(shí)就自動(dòng)打開的,并且生成內(nèi)存inode節(jié)點(diǎn)、dentry目錄項(xiàng)對(duì)象和兩個(gè)文件結(jié)構(gòu)對(duì)象(一個(gè)讀操作、一個(gè)寫操作),其內(nèi)存對(duì)象和普通文件的一致,所以讀寫操作使用的是同樣的文件接口,當(dāng)然讀寫函數(shù)是專用的。




因?yàn)闊o名管道不能顯式打開,因此只能由父子進(jìn)程之間、兄弟進(jìn)程之間或者其他有親緣關(guān)系并且都繼承了祖先進(jìn)程的管道文件對(duì)象的兩個(gè)進(jìn)程間通信使用。命名管道是有文件名和磁盤i節(jié)點(diǎn)的,因此可由任意兩個(gè)或多個(gè)進(jìn)程間通信使用,它的使用方法和普通文件類似,都遵循打開、讀、寫、關(guān)閉這樣的過程,但是讀寫的內(nèi)安實(shí)現(xiàn)和普通文件不同,而和無名管道一樣。



