सेमाफोर और साझा मेमोरी से निपटने में मेरा एकमात्र अनुभव कमांड के उपयोग के माध्यम से है ipcs
। पर एक नजर डालें IPCS आदमी पेज अधिक जानकारी के लिए।
यह कमांड आपको दिखाती है कि किन प्रक्रियाओं में अर्धवृत्त होते हैं:
$ ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x4d114854 65536 saml 600 8
ज्ञात वीर्य के साथ हम PIDs के बारे में अतिरिक्त जानकारी के लिए क्वेरी कर सकते हैं जिनके पास semaphores (ध्यान दें कि 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
पिड कॉलम ये प्रक्रियाएं हैं। आप या तो का उपयोग कर उन्हें देख सकते हैं 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
/proc/PID/maps
, आप किसी प्रक्रिया की मेमोरी मैपिंग देख सकते हैं और POSIX semaphores में संलग्न फाइलों के रूप में दिखा सकते हैं/dev/shm
। मैं हालांकि SysV सेमाफोर के बारे में निश्चित नहीं हूं।