Segment de mémoire partagé
Bonjour,
J'ai besoin de faire un segment de mémoire partagé dans un programme en C sous Linux.
Je pense que je l'attache mal parce que ça compile mais quand je l'utilise toutes les données sont à 0.
Variables globales :
Code:
1 2
| int shmid;
nat * tab_nat; |
nat est une structure, initialisé correctement dans le main.
tab_nat est un tableau de ces structures également bien initialisé.
Voici la déclaration du shm dans le main :
Code:
1 2 3 4 5 6
| if ( (shmid = shmget(CLE_IPC, sizeof(tab_nat), 0666 | IPC_CREAT)) < 0 ) {
perror("shmget");
return EXIT_FAILURE;
} |
Et l'utilisation dans une fonction (qui devra être appellé par un processus) :
Code:
1 2 3 4 5 6
| nat * ptr;
ptr = shmat(shmid, NULL, 0);
printf("%x\n",ptr[0].adr_pub);
printf("%x\n",tab_nat[0].adr_pub); |
Le premier printf affiche 0 alors que le se second affiche bien la bonne valeur... La lecture via le segment de mémoire partagée ne semble donc pas marcher.
Quelqu'un aurait il une idée d'où peut provenir mon erreur ?
Merci d'avance,