我可以使用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