Внезапное изменение ключа сегмента общей памяти

У меня есть приложение C++ на Linux. Приложение использует общую память, созданную без IPC_PRIVATE. Я вижу идентификатор сегмента общей памяти и ключ с помощью команды ipcs. Другие процессы также могут получить доступ к этим сегментам.

К сожалению, иногда ключ становится равным 0, и никакой другой ключ процесса не обращается к такому сегменту. Я видел в соответствующих вопросах здесь, что значение 0 означает, что сегмент является частным. С другой стороны, я не вижу, как это можно сделать. Не говоря уже о том, что я не делаю этого явно.

Мои вопросы:

  • Как я могу исследовать эту проблему?
  • Как я могу увидеть состояние сегмента (частный / общий) из процесса?
  • Могу ли я изменить состояние сегмента обратно на общее изнутри процесса?

1 ответ

Причиной проблемы является внешний скрипт, который ошибочно удаляет сегменты общей памяти. Это два слова: проблема времени.

Другие вопросы по тегам