檔案描述符是什麼?
1.檔案描述符是乙個整數linux程序預設情況下會有3個預設開啟的檔案描述符分別是:
標準輸入stdin(0)
標準輸出stdout(1)
標準錯誤(2)
2.檔案描述符是從0開始的整數
怎樣得到檔案描述符?
當open開啟某檔案時,如果開啟成功,此時的返回值就是此檔案的描述符
檔案描述符的詳解
每個程序都有乙個指標*files,指向一張表files_struct,該錶最重要的部分是包含了乙個指標陣列,每個元素都是乙個指向開啟檔案的指標當我們開啟檔案時,作業系統記憶體中會新建立相應的資料結構來描述目標檔案,於是就有了file結構體,表示乙個已經開啟的檔案物件,而程序執行open系統呼叫,所以必須讓程序和檔案相關聯起來,本質上,檔案描述符是files_struct表中陣列的下標,故拿著檔案描述符可以找到對應的檔案
檔案描述符的分配規則
在files_struct陣列當中,找到當前沒有被使用的而且是最小的乙個下標,作為新的檔案描述符
示例
1. **:
#include
#include
#include
#include
int main()
printf("fd1=%d,fd2=%d\n",fd1,fd2);
close(fd1);
close(fd2);
return
0;}
執行結果:
linux程序預設情況下會開啟三個檔案:標準輸出、標準輸入、標準錯誤,這三個檔案的描述符分別是0、1、2,如果再開啟檔案的話,檔案的描述符就會依次遞增
2. **:
#include
#include
#include
#include
int main()
printf("fd1=%d,fd2=%d\n",fd1,fd2);
close(fd1);
close(fd2);
return
0;}
執行結果:
如果某個檔案被關閉,本來標記它的描述符就會被系統**,開啟新檔案的話,系統會給新檔案乙個描述符,此描述符就是沒有被使用的而且是最小的,後面再開啟檔案的話,檔案描述符的分配規則同理
3. **:
#include
#include
#include
#include
int main()
printf("fd1=%d,fd2=%d\n",fd1,fd2);
close(fd1);
close(fd2);
return
0;}
執行結果:
4. **:
#include
#include
#include
#include
int main()
printf("fd1=%d,fd2=%d\n",fd1,fd2);
close(fd1);
close(fd2);
return
0;}
執行結果:
故檔案描述符的分配規則是
在files_struct中找到當前最小的沒有被使用的作為檔案的描述符
mysql 檔案描述符 檔案描述符
toc 首先,linux的世界裡一切皆為檔案,無論是裝置還是乙個socket連線。檔案又可分為 普通檔案 目錄檔案 鏈結檔案和裝置檔案。檔案描述符 file descriptor 是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數 通常是小整數 用於指代被開啟的檔案,所有執行i o操作的...
檔案描述符
檔案描述符 是個很小的正整數,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。檔案描述符的優點 相容posix標準,許多 linux 和unix 系統呼叫都依賴於它。檔案描述符的缺點 不能移植到unix以外的系統上去,也不直觀。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案...
檔案描述符
作業系統程序表中存放各個檔案進行檔案描述 核心 kernel 利用檔案描述符 file descriptor 來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。目錄檔案描述符概述 如何建立檔案描述符 使用的好處 缺點...