我对Linux API sem_unlink()有点困惑,主要是在什么时候或为什么调用它。我在Windows中使用信号量已经很多年了。在Windows中,一旦关闭了命名信号量的最后一个句柄,系统就会删除底层内核对象。但是在Linux中,开发人员需要通过调用sem_unlink()来删除内核对象。我遇到的问题是,如果进程A调用sem_unlink(),而进程B锁定了信号量,它会立即销毁信号量,现在当进程C出现时,进程B不再受信号量的“保护”。更重要的是,
我有一个第三方的应用程序写在C的Linux平台。应用程序使用以下代码创建信号量: int Value; unsigned short * Array:如果应用程序异常停止(例如通过发送多个SIGINT信号),这些信号量将保持打开状态。可以使用以下命令打开这些信号量:必须使用ipcrm命令手动从系统中删除这些信号量