我可以使用ipcs(1)列出Solaris 10机箱上的活动共享内存对象,但它会按键列出它们。我通过shm_open(3)打开对象,但是,它以字符串作为名称来标识对象。有没有办法按名称列出共享内存对象,或者只是获得密钥< - >名称映射?我最感兴趣的是从命令行运行的东西,尽管这样做的API也可以。谢谢!在Solaris上按名称列出共享内存对象
回答
至于我记得POSIX共享内存在Solaris下出现的文件系统直接下/tmp/
作为.SHMDxxx
文件或下/var/tmp/.SHMD/
上。这可能会或可能不会对您有所帮助,而且我没有一个可方便验证的Solaris框。
是的,'/ tmp/.SHMD *'在我的机器上。所以我认为他们对于shm_open(3)来说是神奇的东西,但看起来它可能只是一个打开(2)的包装,它在适当的文件系统上创建了支持文件?谢谢! – Chris 2009-10-28 19:49:58
shm_open毕竟返回“文件”描述符,你应该mmap。我可能会误解,但我想这是作为某种VFS攻击完成的(需要查看Solaris源代码:) – 2009-10-28 20:09:50
我不知道列表名称或获取键/名称映射的方法。但我想我知道一个API可以解决你的问题。
我认为你可以通过使用系统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;
}
System V IPC接口与POSIX IPC接口!!!! – 2017-11-21 23:10:33
- 1. 在solaris中剥离共享对象
- 2. 共享对象名称冲突
- 3. 在共享内存中分配对象
- 4. 如何在共享内存中得到共享对象
- 5. 对象名称已存在:公共HSQLDB
- 6. 是否可以按名称打开共享内存段?
- 7. PyDoc在共享对象上
- 8. ABAP:共享内存对象同步
- 9. 通过内存共享C++对象
- 10. Apache模块共享内存对象
- 11. 跨模块的共享内存对象
- 12. 我是否需要在共享内存对象上使用shm_unlink?
- 13. 在不同的上下文之间共享OpenCL内存对象
- 14. 避免在Linux上共享对象上的C接口上的名称损坏
- 15. 奇怪的问题,努力创造在solaris I86共享对象
- 16. 在共享内存
- 17. 在共享对象
- 18. 功能名称冲突在共享对象
- 19. 如何在一组Java对象中共享一个名称?
- 20. 如何将stl对象存储在共享内存(C++)中?
- 21. 在共享内存中存储和操作对象数组
- 22. 内存共享
- 23. 共享对象
- 24. 在共享对象中保存图像
- 25. Solaris 32位 - 使用gcc生成共享对象
- 26. 按列拆分data.frame并将每列作为对象存储,并将列名称作为对象的名称
- 27. 按组名称列出内容类型
- 28. 在共享主机Linux帐户上使用共享内存
- 29. JPA:在共享对象上级联
- 30. 以相同名称创建共享内存段 - 返回错误?
看起来像我假设键和名称之间存在1对1映射是错误的。另一种方式来问这个...在Linux中,我可以这样做: 'ls -l/dev/shm' 并查看我在Solaris 10下获得的信息。 – Chris 2009-10-28 18:54:52