檔案描述符

2021-08-17 09:21:46 字數 2230 閱讀 2612

檔案描述符是什麼?

1.檔案描述符是乙個整數

linux程序預設情況下會有3個預設開啟的檔案描述符分別是:

標準輸入stdin(0)

標準輸出stdout(1)

標準錯誤(2)

2.檔案描述符是從0開始的整數

怎樣得到檔案描述符?

當open開啟某檔案時,如果開啟成功,此時的返回值就是此檔案的描述符

檔案描述符的詳解

每個程序都有乙個指標*files,指向一張表files_struct,該錶最重要的部分是包含了乙個指標陣列,每個元素都是乙個指向開啟檔案的指標

本質上,檔案描述符是files_struct表中陣列的下標,故拿著檔案描述符可以找到對應的檔案

當我們開啟檔案時,作業系統記憶體中會新建立相應的資料結構來描述目標檔案,於是就有了file結構體,表示乙個已經開啟的檔案物件,而程序執行open系統呼叫,所以必須讓程序和檔案相關聯起來,

檔案描述符的分配規則

在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 來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。目錄檔案描述符概述 如何建立檔案描述符 使用的好處 缺點...