Linux sem_destroy()
документация гласит:
Безымянный семафор должен быть уничтожен с помощью sem_destroy()
до того, как память, в которой он находится, будет освобождена.Невыполнение этого требования может привести к утечке ресурсов в некоторых реализациях.
Но лучшее, что я могу сделать, - это зарегистрировать sem_destroy()
в atexit()
, который не будет вызываться при сбое или SIGKILL
,У меня есть процесс, отвечающий за создание и уничтожение семафора в общей памяти (файл mmaped), как я могу избежать утечки ресурсов при ненормальных условиях завершения?
В Linux, если файл mmaped удален до sem_destroy()
называется, какой-либо ресурс утечка?Какой ресурс?