shmget: comportement que je ne comprends pas - C - Programmation
Marsh Posté le 07-12-2007 à 00:03:27
Est-ce que tu es sûr que tu n'as pas de shared mem avec la clée SHM_WATCH_OFFSET + 1080 ? Fait un ipcs, et regarde si par hasard (ça serait pas de bol) tu n'aurais pas une clée 0x02200438.
Marsh Posté le 07-12-2007 à 01:10:19
et bien si justement (merci pour la commande ipcs, je ne connaissais pas), probablement un reste de précedente execution (les valeur 80, 8080, 1080, etc... correspondent à des ports, le programme a fonctionné sur un paquet de ports différents)
vu que mon programme (le vrai) envoie une commande IPC_RMID via shmctl avant de quitter, normalement ca n'aurait pas du se produire... dans le doute j'ai fait un reboot (~ $ uptime 01:02:41 up 150 days, 11:25, 1 user, load average: 0.16, 0.04, 0.01 tout de même ^^), tout à l'air d'être rentré dans l'ordre. Merci ^^
Juste une question, pour libérer un segment de mémoire partagée que l'on ne souhaite plus utiliser, c'est bien la commande IPC_RMID via shmctl ou j'ai loupé quelques chose ? ^^;;
Marsh Posté le 06-12-2007 à 22:46:23
Voici un bout de code qui met en évidence ce que je ne pige pas (c'est un extrait dépouillé d'un plus gros programme sur lequel je suis en ce moment):
Si j'execute ce code, aucune erreur ne se produit, alors que pourtant cela devrait être le cas lors du dernier appel à ipctool_shared_get (aucun segment de mémoire partagé correspondant à la clé SHM_WATCH_OFFSET + 1080 n'a été crée)
Si je réexecute ce code en changeant la valeur de SHM_WATCH_OFFSET de 0x02200000 à 0x00200000, cette fois l'erreur se produit bien. Pourquoi ? Aucune idée :-S La valeur de la clé est pourtant bien dans les 2 cas unique et stockable dans la taille de key_t.
Si quelqu'un a une piste pour éclairer ma lanterne je suis preneur ^^.
Message édité par sigmatador le 06-12-2007 à 22:49:25