Answers:
我处理信号量和共享内存的唯一经验是通过使用命令ipcs。看看在IPCS手册页了解更多详情。
此命令显示哪些进程具有信号量:
$ ipcs -s
------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x4d114854 65536      saml       600        8         
使用已知的符号,我们可以查询具有信号量的PID的附加信息(请注意,有8个nsems列):
$ ipcs -s -i 65536
Semaphore Array semid=65536
uid=500  gid=501     cuid=500    cgid=501
mode=0600, access_perms=0600
nsems = 8
otime = Sun May 12 14:44:53 2013  
ctime = Wed May  8 22:12:15 2013  
semnum     value      ncount     zcount     pid       
0          1          0          0          0         
1          1          0          0          0         
2          1          0          0          2265      
3          1          0          0          2265      
4          1          0          0          0         
5          1          0          0          0         
6          1          0          0          4390      
7          1          0          0          4390 
pid列是这些过程。您可以使用查看它们,也可以ps浏览/proc文件系统/proc/<pid>。
例如:
$ more /proc/2265/cmdline 
mono
在@lgeorget留下的注释的基础上,我深入研究了PID 2265的/proc/2265/map内容,并找到了以下/dev/shm引用:
$ grep shm /proc/2265/maps 
7fa38e7f6000-7fa38ebdf000 rw-s 00000000 00:11 18517                      /dev/shm/mono-shared-500-shared_fileshare-grinchy-Linux-x86_64-40-12-0
7fa38f0ca000-7fa38f0cb000 rw-s 00000000 00:11 18137                      /dev/shm/mono.2265
7fa3967be000-7fa3967d3000 rw-s 00000000 00:11 18516                      /dev/shm/mono-shared-500-shared_data-grinchy-Linux-x86_64-328-12-0
              semget(2))一起出现,ipcs -s因此,如果您使用的是POSIX信号量(与您获得的信号sem_open(2)),则必须使用另一种方法。
                    ipcs联机帮助页所述:“ Linux ipcs实用工具与POSIX ipcs实用工具不完全兼容。” 因此,我不确定他们是否想到了POSIX IPC。也许是ipcs:) 的未来版本。
                    map两种信号量的内容都是正确的吗?
                    /dev/shm。现在,我们有了答案。:)
                    
/proc/PID/maps,您可以看到进程的内存映射,并且POSIX信号在中显示为附件/dev/shm。我不确定SysV信号量。