Question

Je peux utiliser ipcs (1) pour répertorier les objets de mémoire partagée actifs sur une boîte Solaris 10, mais cette liste les répertorie par clé. J'ouvre les objets via shm_open (3), cependant, qui prend une chaîne de caractères comme nom pour identifier l'objet. Existe-t-il un moyen de répertorier les objets de mémoire partagée par nom ou d’obtenir simplement la clé & Lt; - & Gt; nom mappage? Je suis surtout intéressé par un élément à exécuter à partir de la ligne de commande, bien qu'une API pour le faire convienne également. Merci!

Était-ce utile?

La solution

Autant que je me souvienne, la mémoire partagée POSIX sous Solaris apparaît sur le système de fichiers directement sous /tmp/ sous la forme de .SHMDxxx fichiers ou sous /var/tmp/.SHMD/. Cela pourrait vous aider ou non et je n'ai pas de boîtier Solaris à valider.

Autres conseils

Je ne connais pas de moyen de lister les noms ou d'obtenir des mappages clé / nom. Mais je pense connaître une API qui résoudra votre problème.

Je pense que vous pouvez attacher le segment à partir de la clé à l'aide de l'interface System V, qui est également une API Posix. Je crois que la façon dont cela 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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top