Я использую память между родительским процессом и несколькими дочерними процессами, выделяя сегменты разделяемой памяти с помощью shm_open/mmap в OS X. Любой родитель или дети могут создавать сегмент, а затем сообщать идентифицирующее имя. Я понимаю, что родитель должен вызывать shm_unlink на каждом из этих сегментов, когда он завершает работу в очистке памяти, в противном случае общая память постоянно просачивается.Очистка общей памяти OS X
То, что я изначально думал, прочитав документацию, состоит в том, что разделяемые сегменты очищаются, когда никакие процессы с ним не отображаются. Однако эксперименты показывают, что это не так, и кто-то должен явно использовать shm_unlink.
Есть ли способ в OS X перечислить все существующие сегменты разделяемой памяти? Проблема заключается в том, что родительский элемент может произойти сбой, и поэтому у него не будет возможности вызвать shm_unlink. В Linux мое решение состоит в том, чтобы очистить/dev/shm, но в OS X мне нужен какой-то способ опубликовать открытые общие сегменты.
'ipcs' не будет показывать POSIX разделяемых сегментов памяти – TheNextman