命名信号量(使用semaphore.h
)由以下形式的名称标识/somename
;也就是说,最多包含 NAME_MAX-4(即 251)个字符的以 null 结尾的字符串,其中包含一个初始斜杠,后跟一个或多个字符,但这些字符都不是斜杠。
因为名称对应于文件系统中的路径名。这个信号量位于哪里?ipcs
用于 System V 信号量。如何定位 POSIX 信号量?
答案1
通过文件系统访问命名信号量
在 Linux 上,命名信号量是在虚拟文件系统中创建的,通常安装在
/dev/shm
,名称形式为sem.somename
。 (这就是信号量名称限制为 NAME_MAX-4 而不是 NAME_MAX 个字符的原因。)
答案2
/proc/<pid>/maps/
将显示具有特定 PID 的进程的内存映射。 (相关问题:https://stackoverflow.com/questions/1401359/understanding-linux-proc-id-maps)
从输出来看,POSIX 信号量显示为/dev/shm/
.