/proc를 통해 현재 실행 중인 프로세스 세마포어를 얻는 방법은 무엇입니까?

/proc를 통해 현재 실행 중인 프로세스 세마포어를 얻는 방법은 무엇입니까?

현재 세마포어를 실행 중인 프로세스를 가져오는 방법을 알고 싶습니다 /proc. SysVIPC 하위 디렉터리를 통해 가능할 것 같습니다. 하지만 이 명령을 어떻게 사용하는지 모르겠습니다.

우분투12.10

답변1

세마포어와 공유 메모리에 대한 나의 유일한 경험은 명령을 사용하는 것입니다 ipcs. 보세요IPCS 매뉴얼 페이지자세한 내용은.

이 명령은 세마포어가 있는 프로세스를 보여줍니다.

$ 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

/proc/2265/map@lgeorget님이 남긴 댓글을 바탕으로 PID 2265의 내용을 파헤쳐보니 다음과 같은 /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

관련 정보