[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[OT] problemi con la funzione fseek() per file maggiori di 4G



Salve a tutti.

Pur non essendo questa una lista che parla di C, ho un problema del
codice che sto scrivendo sulla mia Debian 5.0.3 a 33 bit, per cui...
Eccomi qua.

Ho cominciato a giocare col C e ho scritto una programmino, il cui
compito e' il file A in N sotto-file B1, B2, B3, etc estraendo dei
blocchi e sparpaglandoli nei sottofile con un certo criterio.

Ora, il programmino funziona con un file A di prova (circa 40M), quando
pero' vado a usarlo sul file di lavoro (10G) ecco che ad un certo punto
il programma "sbarella" e da un comportalento sbagliato.

Svolte le indagini del caso, ho trovato "colpevole" la funzion del C
"fseek()"  

(questo e' il suo prototipo: int fseek(FILE *stream_pointer, long
offset, int origin); )

che uso per puntare al file A.

Poiche' A e' piu grande di 2^32 e poiche fseek() ha come offset un long,
ecco che quando l'offset eccede i 2^32, ho il problema.

Domanda:
e' possibile forzare fseek con un offset a 64bit?
Oppure esiste una funzione fseek() a 64bit che posso usare?
Oppure sono obbligato a spostarmi su una Debian a 64bit?


Reply to: