我們學習open的時候,就知道open成功的返回值是乙個檔案描述符。同時它也是乙個小整數。
檔案描述符是乙個數字;乙個數字是如何描述檔案的呢?
乙個程序要對所有的開啟的檔案進行管理,先將檔案描述起來,然後組織進行管理,程序中對檔案進行描述的結構體叫file(struct files),程序使用了乙個結構體陣列來組織這些描述,而檔案描述符就是這個結構體陣列的下標。
linux程序預設情況下會有三個預設開啟的檔案描述符,分別是標準輸入0、標準輸出1、標準錯誤2。
看**:
int main()
printf("fd=[%d]\n", fd);
fflush(stdout);
close(fd);
return 0;
}
我們編譯,執行發現fd=3;
當我們關閉0/2時
int main()
printf("fd=[%d]\n", fd);
fflush(stdout);
close(fd);
return 0;
}
得到的結果就是fd=0(2);
所以檔案描述符的分配規則是:尋找最小的未使用的下標(最小未使用分配原則)。
當我們關閉1,編譯,執行後發現,什麼也沒有出現當我們開啟所對應的檔案的時候,發現fd=1被寫入到tmp.txt檔案當中,
當我們close(1)後,標準輸出就關閉了,所以輸出的內容都被重定向到3號檔案描述符對應的file*,而3號file*正是我們open的,所以就被寫入到tmp.txt中了,不會再寫到標準輸出中取。
linux 檔案系統 Linux 檔案系統結構介紹
ubuntu 像所有類unix系統一樣 在分層樹中組織檔案,其中的關係就像父母和孩子一樣。目錄可以包含其他目錄以及常規檔案,它們是樹的 葉子 樹的任何元素都可以通過路徑名引用 絕對路徑以字元 標識根目錄,其中包含所有其他目錄和檔案 開頭,然後列出必須遍歷以到達該元素的每個子目錄,每個子目錄用 符號分...
Linux檔案系統
linux目錄結構 根目錄 bin 可執行檔案目錄 boot 核心引導檔案 vmlinuz,initrd.img等 dev 裝置檔案儲存目錄,應用程式對這些檔案讀寫和控制可訪問實際裝置 etc 系統配置和一些伺服器配置檔案的位置,如帳號及密碼配置檔案。home 普通使用者目錄 lib 庫檔案目錄 l...
Linux檔案系統
之前對磁碟分割槽已經有了詳細的描述,這篇主要介紹檔案系統 linux的檔案系統是出了名的 下面就 大概介紹下 可以把檔案系統大概分成 superblock inodeblock datablock 三部分 superblock superblock記錄檔案系統的基本資訊比如每塊資料塊的大小,空閒磁碟...