Я работаю над программой, которая использует общую память. Несколько экземпляров указанной программы либо подключатся к существующей, либо создадут ее заново, и вернут ее ОС, когда других процессов нет, либо просто отсоединят ее и завершат работу. Я подумал об использовании простого счетчика, чтобы отслеживать, сколько процессов его использует.
Я использую функцию atexit()
, чтобы выполнить очистку, однако, afaik, после получения сигнала SIGKILL, процессы не будут выполнять очистку, поэтому, если какой-либо из этих процессов не завершится нормально, я никогда не смогу очистить память.
Есть ли способ указать, что делать даже после сигнала SIGKILL? Я, вероятно, напишу какой-то механизм, похожий на таймер, чтобы проверить, все ли процессы еще живы, но я бы очень хотел этого избежать, если есть другой способ.