mmap et fin de fichier !

mmap et fin de fichier ! - C - Programmation

Marsh Posté le 26-06-2012 à 16:58:06    

Bonjour
je suis nouveau sur ce forum et je m'adresse à vous ne trouvant pas de doc sur le sujet que je vais vous présenter.
 
Alors voila, je viens de découvrir la fonction c mmap() pour mapper des fichiers en memoire. J'ai fais quelques essais, lire et écrire la 1er page, passer a la seconde, aller a la derniere toujour en lecture et ecriture etc, pas de probleme. Pourtant quand j'ajoute un enregistrement a la fin du fichier en allouant une page avec une offset en dehors du fichier , j'ai un “segmentation fault”, en fait non cette erreur survient quand j'écris dans cette page ! Sinon l'allocation est acceptée.
Comment je fais pour ajouter une nouvelle page dans un fichier alors ?
Ne me dites pas qu'il faut utiliser la fonction c write() pour ecrire un octet a la nouvelle position dans le fichier, puis faire le mappage. Si c'est ca “pas tres élégant”
 
D'avance merci

Reply

Marsh Posté le 26-06-2012 à 16:58:06   

Reply

Marsh Posté le 26-06-2012 à 22:56:55    

On peut faire ça de manière brutale, en "étendant" le fichier avec la place nécessaire aux ajouts avant le mmap.
Regardes cet exemple: http://www.linuxquestions.org/ques [...] -c-511265/
Mais de toute façon, mmap n'est pas fait pour cela: http://stackoverflow.com/questions [...] ile-access
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 27-06-2012 à 01:46:55    

voila, je viens de trouver une façon d'augmenter la taille d'un fichier avant de mapper cette nouvelle page "ftruncate(fd,FILESIZE+...)" plus élégant qu'un  
<c>
lseek(fd, FILESIZE-1+..., SEEK_SET);
write(fd,"",1);
</c>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed