답변:
세마포어와 공유 메모리를 다루는 유일한 경험은 명령을 사용하는 것입니다 ipcs
. 자세한 내용 은 ipcs 매뉴얼 페이지 를 참조하십시오.
이 명령은 세마포어가있는 프로세스를 보여줍니다.
$ ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x4d114854 65536 saml 600 8
semid known을 사용하면 세마포어가있는 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 세마포어에 대해서는 확실하지 않습니다.