1
在System V共享內存(shmget()
)中,有可能通過使用shmctl(... IPC_STAT ...)
並閱讀字段shm_nattch
結果數據結構。POSIX共享內存:找出是否有人連接到一個段
有了POSIX共享內存(shm_open()
),有沒有什麼辦法可以做類似的事情,或者至少知道是否有人連接?
在System V共享內存(shmget()
)中,有可能通過使用shmctl(... IPC_STAT ...)
並閱讀字段shm_nattch
結果數據結構。POSIX共享內存:找出是否有人連接到一個段
有了POSIX共享內存(shm_open()
),有沒有什麼辦法可以做類似的事情,或者至少知道是否有人連接?
至少有一種方式,有點麻煩,可能不太便於攜帶。您可以掃描/proc
文件系統查找打開此SHM對象的進程。在"/proc/<self-PID>/fd/<shm-FD>"
上使用readlink
獲取對象路徑,然後掃描「/proc/[0-9]+/fd/*
符號鏈接,比較它們指向的文件名,或者更好的還有stat
返回的設備和inode編號,或者您可以簡單地將此任務委託給fuser
實用程序並解析其輸出
這是一個有趣的解決方案,但正如你所說,不是很容易和便攜,我認爲我更喜歡爲該細分市場維護一個單獨的系統信號量。 – mooware