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

时间:2018-03-15 02:40:08

标签: c linux posix semaphore

我使用命名信号量来同步系统中的多个进程。其中一个进程获得锁并退出而不释放锁。现在没有任何进程能够获取信号量锁。

  

/ dev / shm /目录中存在的命名信号量文件(即)   /dev/shm/sem.XXXX。

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

1 个答案:

答案 0 :(得分:1)

您可以使用命令lsof /dev/shm/sem.XXXXlsof =打开文件列表)来查找具有该文件的进程。 fuser也是您想要实现的目标。您可以通过system()电话或fork() / exec()从您的c程序中拨打这些命令。然后,您必须分析命令的输出以采取适当的操作。

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