推薦:文件描述符和文件指針的關係html
fs_struct 記錄該進程所在文件系統等信息。node
files_struct 記錄該進程當前打開的全部文件等信息,其中有一個元素爲數組,數組索引是文件描述符,數組元素(FILE *類型)指向了 file 對象。由此可知兩個文件描述符能夠指向同一 file 對象,即便不在同一進程。linux
file 爲 FILE 對象,能夠在 include/linux/fs.h 中查看。數組
結合以上知識來圖函數
進程與管道的接口和進程與文件的接口是一致的。不一樣的是,在實現上,內核將讀寫的偏移量放在索引節點中而不是文件表中。spa
建立無名管道函數 pipe 一次調用返回兩個文件描述符,而且內核也會從文件表中找到兩個空閒表項及一個內存 inode 索引節點,文件描述符和文件表一一對應,而兩個文件表則對應同一個 inode,執行一個文件表的權限爲讀,一個文件表的權限爲寫。inode 的引用數設置爲 2。管道存儲數據的緩衝區會由內核從內存中分配出一頁大小的內存來做爲管道實現數據的讀與寫。3d