命名信号量(使用semaphore.h)由/ somename形式的名称标识;也就是说,一个以NULL结尾的字符串,最多由NAME_MAX-4(即251个)字符组成,其中包含一个初始斜杠,然后是一个或多个字符(都不是斜杠).
由于名称对应于文件系统中的路径名.该信号量位于何处?
ipcs -s not showing named semaphore
因为ipcs是针对System V信号量的.如何找到POSIX信号量?
解决方法:
在sem_overview手册页中:
On Linux, named semaphores are created in a virtual filesystem, normally mounted under
/dev/shm
, with names of the formsem.somename
. (This is the reason that semaphore names are limited toNAME_MAX-4
rather thanNAME_MAX
characters.)
不要期望这个细节在非Linux系统上几乎没有相似之处(事实上,甚至不要期望信号可以通过sem_open()以外的任何方式看到).