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