#1 Le 28/10/2012, à 10:52
- Erich
Adresser un fichier de taille > 2Go
Bonjour
Si en c standard, je réitère suffisament la commande :
fwrite(&x,sizeof(str_x),1,f);
ou x est une structure du type str_x, et f un pointeur sur FILE, ça bugge a partir du moment ou f, ouvert part fopen, atteint a peu près 2Go soit la taille d'un int (4 octets). Comment contourner ça ?
Merci
Hors ligne
#2 Le 29/10/2012, à 10:08
- claudius01
Re : Adresser un fichier de taille > 2Go
Bonjour,
cf. http://stackoverflow.com/questions/7307 … write-in-c
Sinon et sauf erreur de ma part, la solution radicale est de booter Linux en 64 bits (si cela est possible naturellement)
Cordialement, A+
--
Claudius
Hors ligne
#3 Le 29/10/2012, à 13:46
- credenhill
Re : Adresser un fichier de taille > 2Go
hello
man -s 2 open
...
O_LARGEFILE
(LFS) Allow files whose sizes cannot be represented in an off_t (but can be represented in an off64_t) to be opened. The _LARGE‐ FILE64_SOURCE macro must be defined in order to obtain this definition. Setting the _FILE_OFFSET_BITS feature test macro to 64 (rather than using O_LARGEFILE) is the preferred method of obtaining method of accessing large files on 32-bit systems (see fea‐ ture_test_macros(7)).
Hors ligne
#4 Le 30/10/2012, à 08:45
- Erich
Re : Adresser un fichier de taille > 2Go
Bonjour, et merci de vos réponses
si j'en réfère au lien ci-dessus, il suffirait donc d'ajouter :
#define _FILE_OFFSET_BITS 64
en en-tête, avant d'inclure le stdio.h.
Je n'avais pas pensé a faire un man sur open, j'avais essayé sur fopen mais sans succès.
Je vais en tous cas essayer ça, merci encore
Hors ligne