вывод списка объектов общей памяти в Solaris по имени

StackOverflow https://stackoverflow.com/questions/1638799

Вопрос

Я могу использовать ipcs (1), чтобы вывести список активных объектов общей памяти в окне Solaris 10, но он перечисляет их по ключу. Я открываю объекты с помощью shm_open (3), который принимает символьную строку в качестве имени для идентификации объекта. Есть ли способ перечислить объекты общей памяти по имени или просто получить ключ & Lt; - & Gt; name mapping? В основном меня интересует что-то для запуска из командной строки, хотя API для этого тоже подойдет. Спасибо!

Это было полезно?

Решение

Насколько я помню, общая файловая память POSIX в Solaris отображается в файловой системе либо непосредственно в /tmp/ в виде файлов .SHMDxxx, либо в разделе /var/tmp/.SHMD/. Это может помочь, а может и не помочь, и у меня нет под рукой коробки Solaris для проверки.

Другие советы

Я не знаю, как составить список имен или получить сопоставления ключей / имен. Но я думаю, что знаю API, который решит вашу проблему.

Я думаю, что вы можете прикрепить сегмент к ключу с помощью интерфейса System V, который также является API-интерфейсом Posix. Я считаю, что это работает примерно так:

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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top