2010-05-09 3 views
0

J'essaie de lire un gros fichier (> 2 Go). La recherche est faite par lseek64, puis j'ai essayé de lire en utilisant read (fileHandle, buffer, bufferLength) \ pread64 (fileHandle, buffer, bufferlength, offset) - mais les deux retournent avec -1.lu à partir du fichier après avoir appelé lseek64 - Linux

Que pourrait-il être?

Merci d'avance!

+1

Plus de contexte s'il vous plaît. Quelle est la taille du fichier? Où cherchez-vous? Est-ce que cela fonctionne si vous cherchez de petites compensations? –

+0

Pouvez-vous poster le fragment de code pertinent? C'est assez difficile à déboguer autrement ... –

+1

La taille du fichier est 2.39 GB, mais il arrive aussi avec d'autres fichiers avec des tailles similaires. La valeur de errno est EIO. – rkellerm

Répondre

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

Avez-vous

#define _FILE_OFFSET_BITS 64 

avant d'inclure les en-têtes de syscall? Sinon, montrez du code.

Questions connexes