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

有帮助吗?

解决方案

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

其他提示

我不知道列出名称或获取键/名称映射的方法。但我想我知道一个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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top