Je peux utiliser ipcs (1) pour répertorier les objets de mémoire partagée actifs sur une boîte Solaris 10, mais les répertorie par clé. J'ouvre les objets via shm_open (3), cependant, qui prend une chaîne de caractères en tant que nom pour identifier l'objet. Existe-t-il un moyen de lister les objets de mémoire partagée par nom, ou simplement d'obtenir la clé < -> mapping de nom? Je suis surtout intéressé par quelque chose à exécuter à partir de la ligne de commande, même si une API pour faire cela serait OK, aussi. Merci!Liste des objets de mémoire partagée sous Solaris par leur nom
Répondre
Pour autant que je me rappelle la mémoire partagée sous Solaris apparaît POSIX sur le système de fichiers soit directement sous /tmp/
que .SHMDxxx
fichiers ou sous /var/tmp/.SHMD/
. Cela peut ou peut ne pas vous aider et je n'ai pas de boîte Solaris à portée de main pour valider.
Oui, '/ tmp/.SHMD *' sur ma machine. Donc je pensais que c'était quelque chose de magique à propos de shm_open (3), mais on dirait que c'est probablement juste un wrapper autour de open (2) qui crée le fichier de sauvegarde sur un système de fichiers approprié? Merci! – Chris
shm_open renvoie le descripteur "file" après tout, que vous êtes supposé convertir en mmap. Je peux me tromper, mais je suppose que cela est fait comme une sorte de piratage VFS (besoin de regarder dans les sources Solaris pour cela :) –
Je ne connais pas un moyen de lister des noms ou d'obtenir des mappages de clés/noms. Mais je pense que je connais une API qui va résoudre votre problème.
Je pense que vous pouvez attacher le segment à partir de la clé en utilisant l'interface System V, qui est également une API Posix. Je crois que la façon dont il fonctionne est quelque chose comme:
int attach_shmem(key_t key, void** pp){
void* p;
int id;
id = shmget(key, 0, 0);
if (id < 0) {
perror("shmget");
return ERR_SHMGET;
}
p = shmat(id, 0, 0);
if ((long)p == -1) {
perror("shmat");
return ERR_SHMAT;
}
*pp = p;
return 0;
}
Les interfaces IPC du système V sont différentes de POSIX IPC Interface!!!! –
- 1. Recherche d'objets par leur nom
- 2. Instancier des classes par leur nom avec un modèle d'usine
- 3. Visual Studio et mémoire partagée
- 4. Libération de la mémoire allouée sous Solaris/Linux
- 5. Sémaphore de mémoire partagée
- 6. Mémoire partagée sous Windows accessible en lecture et en écriture par des processus distincts
- 7. Autorisations d'accès à la mémoire partagée sous Windows
- 8. Comment utiliser Solaris :: Kstat sous Solaris 5.10?
- 9. mod_fcgi + APC + Mémoire partagée
- 10. charger des objets de bibliothèque par liste de chaînes, AS3
- 11. Mémoire partagée Linux
- 12. Ecriture en mémoire partagée
- 13. faire des dossiers sous le dossier accessible par leur URL
- 14. Instanciation d'objets dans la mémoire partagée C++
- 15. Mémoire partagée sans fichiers mappés en mémoire
- 16. mémoire partagée entre les compilateurs?
- 17. Comment puis-je lister les sessions d'écran par leur nom?
- 18. Trouver l'utilisation des ressources (CPU et mémoire) par les threads d'un processus dans unix (solaris/linux)
- 19. Augmenter la mémoire pour la mémoire partagée
- 20. Objets de mémoire secondaire de mémoire principale
- 21. SQL Server « fournisseur de mémoire partagée » Erreur
- 22. Détection et contrôle des lectures de mémoire partagée non autorisées
- 23. Déterminer l'utilisation de la mémoire des objets?
- 24. La mémoire partagée n'est pas partagée entre les processus
- 25. Utilisation de la mémoire partagée sous Windows. Comment passer des données différentes
- 26. Instantané des objets en mémoire
- 27. fuite de mémoire des objets à l'intérieur des classes java.lang.ref.WeakReference
- 28. Où définir LD_LIBRARY_PATH sous Solaris?
- 29. canonicalize un nom de chemin sur solaris
- 30. bibliothèque partagée sous Ubuntu
Apparemment, ma supposition qu'il y a un mappage 1-à-1 entre les clés et les noms était incorrecte. Une autre façon de demander cela ... Sous Linux, je peux faire: 'ls -l/dev/shm' et voir les informations que je tente d'obtenir sous Solaris 10. – Chris