我可以使用ipc(1)列出Solaris 10机器上的活动共享内存对象,但它是按键列出它们的。不过,我是通过shm_open(3)打开对象的,它以字符串作为名称来标识对象。有没有办法按名称列出共享内存对象,或者只获取键<->名称映射?我最感兴趣的是可以从命令行运行的东西,尽管这样做的API也是可以的。谢谢!
发布于 2009-10-29 02:36:09
就我记忆所及,Solaris下的POSIX共享内存出现在文件系统上,或者直接以.SHMDxxx文件的形式出现在/tmp/下,或者在/var/tmp/.SHMD/下。这可能对您有帮助,也可能没有帮助,而且我手头没有Solaris工具箱可供验证。
发布于 2009-10-29 01:48:27
我不知道有什么方法可以列出名称或获取键/名称映射。但我想我知道一个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;
}https://stackoverflow.com/questions/1638799
复制相似问题