Я смутно помню из моих UNIX (AIX и HPUX, я признаю, что никогда не использовал совместно используемую память в Linux), что удаление просто помечает блок как больше не доступный для новых клиентов.
Он будет физически удален только после того, как к нему больше не присоединятся процессы.
Это то же самое, что и для обычных файлов, которые удаляются, информация об их каталогах удаляется, но содержимое файла исчезает только после того, как последний процесс закрывает его. Это иногда приводит к файлам журналов, которые занимают все больше места в файловой системе, даже после того, как они удалены, поскольку процессы все еще пишут в них, вследствие «отрыва» между указателем файла (ноль или более записей каталога указывают в индекс) и содержимое файла (сам индекс).
Из вывода ipcs
видно, что 3 из 4 все еще имеют присоединенные процессы, поэтому они не будут никуда идти, пока эти процессы не отсоединятся от блоков общей памяти. Другой, вероятно, ожидает какой-то функции «очистки», чтобы очистить ее, но это, конечно, будет зависеть от реализации совместно используемой памяти.
Хорошо написанный клиент разделяемой памяти (или файлов журнала в этом отношении) должен периодически повторно присоединяться (или переворачиваться), чтобы гарантировать, что эта ситуация временна и не влияет на работу программного обеспечения.