回答:
セマフォと共有メモリを扱う唯一の経験は、コマンドを使用することですipcs
。を見てください詳細については ipcsのmanページをご覧ください。
このコマンドは、どのプロセスにセマフォがあるかを示します。
$ 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
@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セマフォについてはわかりません。