記錄一下:檔案指標向檔案描述符轉換的時候用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 中儲存著乙份檔案描述符表,檔案描述符就是這個表的索引,每個表項都有乙個指向已開啟檔案的指標。...