Bagaimana cara mendapatkan proses yang saat ini menjalankan semaphores oleh / proc?
16
Saya bertanya-tanya bagaimana cara mendapatkan proses yang saat ini menjalankan semaphores /proc? Saya kira itu mungkin dilakukan oleh subdirektori SysVIPC. Tetapi saya tidak tahu bagaimana cara menggunakan perintah ini.
Di /proc/PID/maps, Anda dapat melihat pemetaan memori dari suatu proses dan semaphores POSIX muncul sebagai file yang dilampirkan di /dev/shm. Saya tidak yakin tentang Saphv semaphores.
lgeorget
@ lgeorget dan saya sendiri telah mengkonfirmasi bahwa semaphores POSIX dan SysV benar-benar muncul di /proc/PID/mapsfile untuk PID yang diberikan.
slm
Tetapi ternyata, fragmen memori bersama juga muncul sebagai entri /dev/shmdan mereka cukup dibedakan dari semaphore (kecuali jika mereka memiliki nama yang pintar).
lgeorget
Jawaban:
21
Satu-satunya pengalaman saya dalam berurusan dengan semaphores dan memori bersama adalah melalui penggunaan perintah ipcs. Lihatlah halaman manual ipcs untuk lebih jelasnya.
Perintah ini menunjukkan kepada Anda proses apa yang memiliki semaphores:
Sejauh yang saya tahu, hanya System V semaphores (yang Anda dapatkan semget(2)) muncul di ipcs -sjadi jika Anda menggunakan semaphores POSIX (yang Anda dapatkan dengan sem_open(2)), Anda harus menggunakan metode lain.
lgeorget
Tahu ada perintah terminal yang akan mengembalikan sem_open (2) variety? Hanya penasaran. Semua yang saya tahu tentang semaphores ada di jawaban di atas 8-).
slm
Tidak, itu masalahnya. ;) Seperti yang ipcsdikatakan halaman manual: "Utilitas ipcs Linux tidak sepenuhnya kompatibel dengan utilitas ipcs POSIX." jadi saya tidak yakin mereka bahkan memikirkan sesuatu untuk POSIX IPC. Mungkin rilis ipcs:).
lgeorget
isi mapkeduanya variasi pemikiran semafor, benar?
slm
Saya rasa begitu. Dengan satu atau lain cara, semafor harus dipasang di suatu tempat dalam memori proses. Tapi saya tidak yakin semafor SysV juga dibuat di sistem file semu /dev/shm. Sekarang, kita punya jawabannya. :)
/proc/PID/maps
, Anda dapat melihat pemetaan memori dari suatu proses dan semaphores POSIX muncul sebagai file yang dilampirkan di/dev/shm
. Saya tidak yakin tentang Saphv semaphores./proc/PID/maps
file untuk PID yang diberikan./dev/shm
dan mereka cukup dibedakan dari semaphore (kecuali jika mereka memiliki nama yang pintar).Jawaban:
Satu-satunya pengalaman saya dalam berurusan dengan semaphores dan memori bersama adalah melalui penggunaan perintah
ipcs
. Lihatlah halaman manual ipcs untuk lebih jelasnya.Perintah ini menunjukkan kepada Anda proses apa yang memiliki semaphores:
Dengan semid diketahui, kami dapat meminta informasi tambahan tentang PID yang memiliki semaphores (perhatikan ada 8 - kolom nsems):
Kolom pid adalah proses-proses ini. Anda dapat mencari mereka menggunakan
ps
atau melihat melalui sistem/proc
file/proc/<pid>
,.Sebagai contoh:
POSIX & SystemV
Membangun dari komentar yang ditinggalkan oleh @lgeorget Saya menggali
/proc/2265/map
isi PID 2265 saya dan menemukan/dev/shm
referensi berikut :sumber
semget(2)
) muncul diipcs -s
jadi jika Anda menggunakan semaphores POSIX (yang Anda dapatkan dengansem_open(2)
), Anda harus menggunakan metode lain.ipcs
dikatakan halaman manual: "Utilitas ipcs Linux tidak sepenuhnya kompatibel dengan utilitas ipcs POSIX." jadi saya tidak yakin mereka bahkan memikirkan sesuatu untuk POSIX IPC. Mungkin rilisipcs
:).map
keduanya variasi pemikiran semafor, benar?/dev/shm
. Sekarang, kita punya jawabannya. :)