Bonjour à tous.
Je souhaite créer un segment de mémoire partagée entre deux instances de mon programme. Mais voila : chaque instance crée son propre segment, et pour cause ceux-ci sont privés.
Je crée le segment de cette manière
De cette manière, mon processus sait s'il est propriétaire ou non du segment. Mais quand je tappe la commande "ipcs" dans le shell alors que deux instances de mon programme tournent, je peux lire :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 key_t shmkey = static_cast<key_t>(0xa51d); if(shmid = shmget(shmkey, SHMSIZE, IPC_EXCL|IPC_CREAT|0644) < 0) { if(errno != EEXIST || (shmid = shmget(shmkey, SHMSIZE, 0644) < 0)) { if(errno != EEXIST) return ERROR1; else return ERROR2; } [...] }
Selon le man d'ipcs, une clé de valleur nulle (zéro) signifie que le segment est privé, ce que je ne souhaite pas. J'ai bien sûr tenté d'initialiser ma shmkey avec ftok, mais je n'ai accès à aucun nom de fichier (je ne suis pas dans le main, et impossible de passer argv en argument). D'autres valeurs pour shmkey ne changent rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 0x00000000 2162707 dev 644 1440016 1 dest 0x00000000 2263452 dev 644 1440016 1 dest
Si quelqu'un pouvait me donner un petit coup de pouce
Partager