Bonjour à tous !
Voila j'ai un petit souci en utilisant ma memoire partagee dans mon programme...
Voici la fonction qui l'initialise :
Le souci, c'est qu'un printf a la fin de cette fontion sur shm[0] par exemple me retourne 0 et non la valeur qui était dans mem->nbMaxJ.Code:
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
28
29
30 byte* SHM_init(mem_t* mem, size_t shm_size){ //Creation SHM int i,j; if((shmid = shmget((key_t)401 , shm_size , IPC_CREAT|0666)) == -1){ fprintf(stderr,"SHM_init : Erreur lors de la creation de SHM\n"); exit(-1); } //Attachement byte* shm = (byte*)shmat(shmid , NULL , 0); if(shm == (void*)(-1)){ fprintf(stderr,"SHM_init : Erreur lors de l'attachement\n"); exit(-1); } //Joueurs (*shm) = (byte)mem->nbMaxJ; shm++; (*shm) = mem->nbJoueurs; shm++; for(i=0 ; i<(ceil((mem->nbMaxJ)/8)) ; i++){ (*shm) = mem->statutJoueurs[i]; shm++; } /* ... */ printf("Initialisation SHM terminee\n"); return shm; }
Ensuite, je me demande si ma fonction va marcher ailleurs , c'est à dire que je retourne un pointeur sur ma memoire partagee, je vais l'utiliser dans mon main, puis j'apellerais une fonction qui le detachera et detruira ma memoire partagee. Est-ce correct ?
VOila merci !!
