Kinh nghiệm duy nhất của tôi trong việc xử lý các semaphores và bộ nhớ chia sẻ là thông qua việc sử dụng lệnh ipcs. Hãy xem trang người đàn ông ipcs để biết thêm chi tiết.
Lệnh này cho bạn thấy các quá trình có semaphores:
$ ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x4d114854 65536 saml 600 8
Với semid đã biết, chúng ta có thể truy vấn để biết thêm thông tin về các PID có semaphores (lưu ý có 8 - cột 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
Cột pid là những quá trình này. Bạn có thể tra cứu chúng bằng cách sử dụng pshoặc xem qua /prochệ thống tệp , /proc/<pid>.
Ví dụ:
$ more /proc/2265/cmdline
mono
POSIX & SystemV
Xây dựng một bình luận để lại bởi @lgeorget Tôi /proc/2265/mapđã tìm hiểu nội dung của PID 2265 và đã tìm thấy các /dev/shmtài liệu tham khảo sau :
$ 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
/proc/PID/maps, bạn có thể thấy ánh xạ bộ nhớ của một quá trình và các ngữ nghĩa POSIX hiển thị dưới dạng các tệp đính kèm/dev/shm. Tôi không chắc chắn về semaphores SysV mặc dù.