|
命名管道的工作原理匿名管道應(yīng)用的一個(gè)主要限制是它只能用于與親屬進(jìn)行進(jìn)程間通信。在命名管道被提出之后,這個(gè)限制已經(jīng)被克服了。命名管道提供與其關(guān)聯(lián)的路徑名,并作為FIFO文件存在于文件系統(tǒng)中。 這樣,即使沒(méi)有與FIFO的創(chuàng)建過(guò)程相關(guān)的進(jìn)程,只要路徑可以被訪問(wèn),它們就可以通過(guò)FIFO相互通信。因此,通過(guò)FIFO,無(wú)關(guān)進(jìn)程也可以交換數(shù)據(jù)。先進(jìn)先出管的開(kāi)啟方式與普通管不同。 普通管道包括兩個(gè)文件數(shù)據(jù)結(jié)構(gòu):對(duì)應(yīng)的VFS索引節(jié)點(diǎn)和共享數(shù)據(jù)頁(yè),這兩個(gè)數(shù)據(jù)結(jié)構(gòu)是在進(jìn)程每次運(yùn)行時(shí)創(chuàng)建的。FIFO始終存在,需要用戶打開(kāi)和關(guān)閉。Linux必須處理兩種情況:讀進(jìn)程在寫(xiě)進(jìn)程之前打開(kāi)管道,讀進(jìn)程在寫(xiě)進(jìn)程寫(xiě)入數(shù)據(jù)之前讀入。此外,FIFO管道的使用方式與普通管道相同,具有相同的數(shù)據(jù)結(jié)構(gòu)和操作。 |