按名称列出Solaris上的共享内存对象

时间:2009-10-28 17:26:31

标签: c solaris posix shared-memory

我可以使用ipcs(1)列出Solaris 10机箱上的活动共享内存对象,但它按键列出它们。我通过shm_open(3)打开对象,但它将一个字符串作为名称来标识对象。有没有办法按名称列出共享内存对象,或只是获取键< - >名称映射?我最感兴趣的是从命令行运行的东西,尽管用于执行此操作的API也可以。谢谢!

2 个答案:

答案 0 :(得分:2)

据我所知,Solaris下的POSIX共享内存直接出现在/tmp/ .SHMDxxx个文件或/var/tmp/.SHMD/下的文件系统中。这可能会或可能不会对您有所帮助,而且我没有方便的Solaris框验证。

答案 1 :(得分:-1)

我不知道列出名称或获取键/名称映射的方法。但我想我知道一个API可以解决你的问题。

我认为您可以使用System V接口(也是Posix API)从密钥中附加段。我相信它的工作方式如下:

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;
}
相关问题