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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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,