我使用命名信号量来同步系统中的多个进程。其中一个进程获得锁并退出而不释放锁。现在没有任何进程能够获取信号量锁。
/ dev / shm /目录中存在的命名信号量文件(即) /dev/shm/sem.XXXX。
我试图通过在代码中添加调试日志来找到罪魁祸首的过程。有没有其他方法可以用来查找与命名信号量相关联的进程ID?
答案 0 :(得分:1)
您可以使用命令lsof /dev/shm/sem.XXXX
(lsof
=打开文件列表)来查找具有该文件的进程。 fuser
也是您想要实现的目标。您可以通过system()
电话或fork()
/ exec()
从您的c程序中拨打这些命令。然后,您必须分析命令的输出以采取适当的操作。
有关可移植性问题的更多详细信息,请查看https://unix.stackexchange.com/questions/18614/alternatives-for-lsof-command