Linux編程(文件描述符)

在Linux編程世界中,不可能沒聽過文件描述符這個概念,我們操縱任何設備的時候,幾乎都要通過它來達成的,它究竟是何方神聖呢?隨我描述符科學家來一探究竟。


首先,我們在Linux下打開文件用的都是如下代碼:


int fd = open(... ...);


當然有同學可能會說,有時也可以用fopen(),但是fopen()只是標準IO對系統IO的封裝,歸根結底還是使用open()來打開一個文件。


問題就在於這個“打開”,究竟打開意味着什麼呢? 很多人就想當然地以爲打開嘛,就跟在windows下雙擊一個文件,或者雙擊一個文件夾一樣,就是一個動作而已,其實不然,常說的打開一個文件實際上最重要的是獲取這個文件的描述符,描述符是用來表徵這個文件的代表物,下面的圖清晰地展示了這一點:




內核空間中有一堆數據結構表達一個文件的屬性信息,但是用戶空間看不見,只看見一個代表了這些信息的整數i,通常我們稱之爲文件描述符,對文件的讀寫和ioctl操作都是通過這個東東來達到的呢!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章