我可以使用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. 如何在共享內存中得到共享對象
- 2. 對象名稱已存在:公共HSQLDB
- 3. 是否可以按名稱打開共享內存段?
- 4. PyDoc在共享對象上
- 5. 跨模塊的共享內存對象
- 6. 奇怪的問題,努力創造在solaris I86共享對象
- 7. 在共享對象
- 8. 功能名稱衝突在共享對象
- 9. 在共享內存中存儲和操作對象數組
- 10. 內存共享
- 11. 共享對象
- 12. 在共享對象中保存圖像
- 13. 按組名稱列出內容類型
- 14. 在共享主機Linux帳戶上使用共享內存
- 15. Solaris 32位 - 使用gcc生成共享對象
- 16. 無法將我的共享內存的名稱寫入管道
- 17. 以相同名稱創建共享內存段 - 返回錯誤?
- 18. 從.so(共享對象)內使用內存映射文件
- 19. 在共享內存中放置Python對象
- 20. 在Python中的相同對象之間共享內存
- 21. 在共享內存中獲取對象的offset_ptr
- 22. 共享庫名稱衝突
- 23. 共享內存在Unix的
- 24. Win CE:創建命名共享內存
- 25. C共享內存
- 26. Linux共享內存
- 27. 共享內存段
- 28. CUDA共享內存
- 29. RDMA內存共享
- 30. 按名稱查找對象
看起來像我假設鍵和名稱之間存在1對1映射是錯誤的。另一種方式來問這個...在Linux中,我可以這樣做: 'ls -l/dev/shm' 並查看我在Solaris 10下獲得的信息。 – Chris 2009-10-28 18:54:52