Linux中的sem_destroy()
文档表示:
在释放存储它的内存之前,应该使用
sem_destroy()
来销毁未命名的信号量。否则,某些实现可能会导致资源泄漏。
但我所能做的最好的办法是将sem_destroy()
注册到atexit()
,这不会在异常终止或SIGKILL
时被调用。我有一个负责在共享内存上(一个mmaped文件)创建和销毁信号量的进程,如何避免在异常终止条件下的资源泄漏?
如果在调用sem_destroy()
之前删除了mmaped文件,则在Linux上是否会发生任何类型的资源泄漏?是什么资源?
sem_destroy
实际上会释放任何资源。 - Florian Weimer