如何找到哪个进程拥有指定的 posix 信号量锁?

How to find which process owns the named posix semaphore lock?

我使用命名信号量来同步我系统中的多个进程。其中一个进程获取了锁并退出,而没有释放能够获取信号量锁的进程的 lock.Now none。

named semaphore file present in /dev/shm/ directory (i.e) /dev/shm/sem.XXXX.

我试图通过在代码中添加调试日志来找到罪魁祸首进程。我们可以使用任何其他方法来查找与命名信号量关联的进程 ID 吗?

您可以只使用命令lsof /dev/shm/sem.XXXXlsof = 打开文件列表)来查找哪个进程拥有该文件。 fuser 也等同于您要实现的目标。您可以通过 system() 调用或 fork()/exec() 从您的 c 程序调用这些命令。然后您必须分析命令的输出以采取正确的操作。

有关可移植性问题的更多详细信息,请查看 https://unix.stackexchange.com/questions/18614/alternatives-for-lsof-command