我正在處理大文件。 (>>> 2GB)。我的問題是如果文件大於sizeof(int)的話,在文件描述符上使用fileno()是安全的嗎?fileno()和大於2GB的文件
這裏快速的代碼片段:
#define _FILE_OFFSET_BITS 64
#include <stdio.h>
#include <inttypes.h>
int readstuff(FILE *fp,uint64_t seekpoint, uint64_t seekwidth) {
int j;
char buf[seekwidth];
if (pread(fileno(fp),buf,seekwidth,seekpoint)!=-1) {
/* do stuf */
return 1;
}
else {
return 2;
}
}
int main() {
FILE *FP;
FP=fopen("/testfile","r");
readstuff(FP,0,10000);
}
'fileno(3)'返回與給定的'FILE'指針相關的整數文件描述符。除非你有超過'MAXINT'文件打開你不會有問題(這不太可能)。也許你正在考慮'ftell(3)',它會返回一個'long'? – Perry
不,我在想,因爲我真的不知道fileno()如何在後臺工作。我想可能大於2GB的文件可能會導致問題,因爲在整個文件中至少在32位系統上有超過sizeof(int)字節 – RG337
我編輯了原始問題以澄清 – RG337