Filesystems
管道/FIFO的字節偏移
為什麼管道/FIFO的字節偏移在inode而不是文件表中維護,就像正常文件一樣?
我在 Maurice Bach 的The Design of The Unix Operating System (1986)第 113 頁讀到了這一行。
在 inode 中維護字節偏移量可以方便地通過 FIFO 訪問管道數據,並且不同於在文件表中維護偏移量的正常文件。
請注意,該書描述了 30 年前的 AT&T Unix 系統內部結構。你不能假設在現代 Unix 和類 Unix 系統中事情是一樣的。
在任何情況下,不管管道是如何在內部實現的,而對於正常文件或其他可搜尋文件,字節偏移量是屬於打開文件描述的東西(我想這就是你的書所說的文件表條目)。也就是說,獨立打開同一個文件的兩個程序將在文件中擁有各自的偏移量。從文件中讀取的一個程序不會影響另一個程序的偏移量。
對於管道,在管道上打開的所有程序的所有文件描述符共享相同的偏移量。或者換句話說,偏移量屬於管道。因此,將它儲存在 inode 中而不是在所有打開的文件描述中複製它是有意義的。