檔案描述符和檔案指標的相互轉換

2021-07-25 13:02:35 字數 781 閱讀 8426

1檔案描述符,在linux系統中,裝置也是以檔案的形式存在,要對該裝置進行操作就必須先開啟這個檔案,開啟這個檔案就會獲得這個檔案描述符,它是個很小的正整數,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。

檔案描述符的優點:相容posix標準,許多linux和unix系統呼叫都依賴於它。

缺點:不能移植到非unix系統上,也不直觀。

檔案指標,c語言中使用的是檔案指標而不是檔案描述符作為i/o的控制代碼,「檔案指標(file pointer)」指向程序使用者區中的乙個被稱為file結構的資料結構。file結構包括乙個緩衝區和乙個檔案描述符值。而檔案描述符值是檔案描述符表中的乙個索引。從某種意義上來說,檔案指標就是控制代碼的控制代碼。

2. 檔案指標/控制代碼(file*)、檔案描述符以及檔案路徑(filepath)的相互轉換

檔案路徑 到 檔案指標:filepath --fopen()-->file*;

檔案路徑 到 檔案描述符:filepath--open()--fd;

檔案描述符 到 檔案指標:fd--fdopen()-->file*;

檔案指標 到 檔案描述符:file*--fileno()--->fd;

3.示例**

int main(int argc, char **argv)

C語言檔案指標和檔案描述符相互轉換

記錄一下 檔案指標向檔案描述符轉換的時候用fileno 函式沒問題,然而檔案描述符向檔案指標轉換的時候卻出現問題,大於2以上的值就出錯 用fdopen 函式。結果採用iob func 函式卻可以,暫時記錄一下,後面有時間再 其中的原因。char s hello k7k file fp1 fopen ...

檔案指標和檔案描述符

原文 檔案描述符 在linux系統中,裝置也是以檔案的形式存在,要對該裝置進行操作就必須先開啟這個檔案,開啟檔案就會獲得檔案描述符,它是個很小的正整數。每個程序在pcb process control block 中儲存著乙份檔案描述符表,檔案描述符就是這個表的索引,每個表項都有乙個指向已開啟檔案的...

檔案指標和檔案描述符

檔案描述符 在linux系統中,裝置也是以檔案的形式存在,要對該裝置進行操作就必須先開啟這個檔案,開啟檔案就會獲得檔案描述符,它是個很小的正整數。每個程序在pcb process control block 中儲存著乙份檔案描述符表,檔案描述符就是這個表的索引,每個表項都有乙個指向已開啟檔案的指標。...