我可以使用 ipcs(1) 列出 Solaris 10 机器上的活动共享内存对象,但它通过键列出它们。不过,我正在通过 shm_open(3) 打开对象,它采用字符串作为名称来识别对象。有没有办法按名称列出共享内存对象,或者只获取键<->名称映射?我最感兴趣的是从命令行运行的东西,尽管这样做的 API 也可以。谢谢!
问问题
1742 次
2 回答
2
据我所知,Solaris 下的 POSIX 共享内存出现在文件系统上,或者直接在/tmp/
as .SHMDxxx
files 下,或者在/var/tmp/.SHMD/
. 这可能对您有帮助,也可能对您没有帮助,而且我没有方便验证的 Solaris 盒子。
于 2009-10-28T18:36:09.187 回答
-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;
}
于 2009-10-28T17:48:26.977 回答