linux – 如何通过/ proc获取当前正在运行信号量的procces?

我想知道如何通过/ proc获取当前运行信号量的进程?我想这可能是SysVIPC子目录.但我不知道如何使用这个命令.

Ubuntu 12.10

解决方法:

我处理信号量和共享内存的唯一经验是使用命令ipcs.有关详细信息,请查看ipcs man page.

此命令显示哪些进程具有信号量:

$ipcs -s

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x4d114854 65536      saml       600        8         

使用已知的semid,我们可以查询有关具有信号量的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

POSIX& SystemV

建立@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
上一篇:并发编程 Semaphore的使用和详解


下一篇:在VS2010中使用Git管理源代码