2011-07-13 25 views
1

在System V共享內存(shmget())中,有可能通過使用shmctl(... IPC_STAT ...)並閱讀字段shm_nattch結果數據結構。POSIX共享內存:找出是否有人連接到一個段

有了POSIX共享內存(shm_open()),有沒有什麼辦法可以做類似的事情,或者至少知道是否有人連接?

回答

1

至少有一種方式,有點麻煩,可能不太便於攜帶。您可以掃描/proc文件系統查找打開此SHM對象的進程。在"/proc/<self-PID>/fd/<shm-FD>"上使用readlink獲取對象路徑,然後掃描「/proc/[0-9]+/fd/*符號鏈接,比較它們指向的文件名,或者更好的還有stat返回的設備和inode編號,或者您可以簡單地將此任務委託給fuser實用程序並解析其輸出

+0

這是一個有趣的解決方案,但正如你所說,不是很容易和便攜,我認爲我更喜歡爲該細分市場維護一個單獨的系統信號量。 – mooware