Bonjour
Je suis en train de faire un petit programme avec mmap permetant de gerer des utilisateurs.
J'ai cependant un petit soucis.
J'ecris mes structures dans le fichier sans soucis. Mais je ne comprends pas pourquoi munmap() n'adapte pas la taille du fichier malgres le fait que l'argument len soit plus grand que la taille reel du fichier.
Donc pour le moment la taille du fichier depend directement de la taille que je lui ai donne au debut(961 dans mon cas) et ne depend absolument pas de ce que j'ecris dedans grace a mmap.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 int main(int ac, char **av) { int fd; int fsize; void *file; if (-1 == (fd = open("all_users", O_CREAT | O_RDWR, 0755))) { printf("open failed\n"); return (EXIT_FAILURE); } fsize = lseek(fd, 0, SEEK_END); file = mmap(NULL, fsize, PROT_READ | PROT_WRITE, MAP_FILE | MAP_PRIVATE, fd, 0); if (file == MAP_FAILED) { printf("mmap failed %d\n", fsize); return (EXIT_FAILURE); } if (ac == 3) fsize = add_user(av[1], av[2], file, fsize); /*add user ecrit le header de 8octects et 10 structures de 200octects a la suite du pointeur file on optient donc une fsize de 2008*/ printf("fsize = %d\n", fsize); if (-1 == munmap(file, fsize)) printf("mmap failed\n"); return (EXIT_SUCCESS); }
Je suppose donc qu'il me manque quelquechose pour que mmap adapte lui meme la taille de mon fichier. Je pensais que c'etait le param len de munmap() mais visiblement pas.
En gros comment faire pour changer la taille d'un fichier mappe par mmap ?
Merci d'avance pour votre aide !
Partager