我对Linux API sem_unlink()有点困惑,主要是在什么时候或为什么调用它。我在Windows中使用信号量已经很多年了。在Windows中,一旦关闭了命名信号量的最后一个句柄,系统就会删除底层内核对象。但是在Linux中,开发人员需要通过调用sem_unlink()来删除内核对象。我遇到的问题是,如果进程A调用sem_unlink(),而进程B锁定了信号量,它会立即销毁信号量,现在当进程C出现时,进程B不再受信号
Linux sem_destroy()文档说:
在释放未命名信号量所在的内存之前,应使用sem_destroy()销毁未命名信号量。如果不这样做,可能会导致某些实现上的资源泄漏。但是,我所能做的最好是将sem_destroy()注册到atexit(),它不会在中止或SIGKILL上被调用。我有一个进程负责在共享内存( mmaped文件)上创建和销毁信号量,如何避免异常终止条件下的资源泄漏?在Linux上,如果在调用
我试图弄清楚如何在Linux0.01中实现一组系统调用,这些调用提供信号量(无需繁忙等待)模块。我希望这些系统调用允许进程请求一个新的信号量,并将其用于进程同步。我想用C++写这些东西,但我很难让它们正常工作。有人有简单的解决办法吗?
(系统调用#110) int sema_request(int值):如果成功,此函数将返回一个新的信号量,否则返回-1。新的信号量被初始化为"value“。您的</e