2010-05-09 81 views
0

我正在嘗試讀取一個大文件(> 2.0 GB)。 尋找是由lseek64完成的,然後我嘗試使用read(fileHandle,buffer,bufferLength)\ pread64(fileHandle,buffer,bufferLength,offset)讀取 - 但兩者都返回-1。調用lseek64後從文件讀取 - Linux

它可能是什麼?

在此先感謝!

+1

更多背景請。文件有多大?你在尋找什麼?如果您尋求小偏移量,它會起作用嗎? – 2010-05-09 14:56:57

+0

你能發佈相關的代碼片段嗎?這很難調試,否則... – 2010-05-09 14:57:55

+1

該文件的大小爲2.39 GB,但它也發生在其他類似大小的文件。 errno的價值是EIO。 – rkellerm 2010-05-09 15:03:55

回答

-1
ssize_t count = read(fileHandle, buffer, bufferLength); 
if (count == -1) 
{ 
fprintf(stderr, "can't read file: %m\n"); 
exit(1); 
} 
0

你有

#define _FILE_OFFSET_BITS 64 

您包括系統調用之前頭?否則,顯示一些代碼。