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

2021-07-25 13:13:11 字數 495 閱讀 2416

記錄一下:檔案指標向檔案描述符轉換的時候用fileno()函式沒問題,然而檔案描述符向檔案指標轉換的時候卻出現問題,大於2以上的值就出錯 用fdopen()函式。

結果採用iob_func()函式卻可以,暫時記錄一下,後面有時間再**其中的原因。

char* s = "hello k7k!";

file* fp1 = fopen("x.txt", "w+");

fprintf(fp1, "%s\n", s);

int fd1 = fileno(fp1);

printf("t1 fd:%d \n", fd1);

file* fp2 = (&__iob_func()[fd1]);

fprintf(fp2, "%s\n", s);

int fd2 = fileno(fp2);

printf("t2 fd:%d \n", fd2);

這樣沒問題。iob_func()函式原理到底是咋樣的.

C語言檔案指標和檔案描述符

include int fsync intfd int fdatasync intfd include int fflush file stream 注 fsync引數是檔案描述符,fflush引數是檔案指標 c語言檔案指標域檔案描述符之間可以相互轉換 int fileno file stream ...

檔案指標和檔案描述符

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

檔案指標和檔案描述符

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