Jika Anda cukup beruntung untuk menggunakan HP-UX , perintah pipcs
(PDF) (maaf tautan rusak, tidak ada arsip saat ini , lihat halaman manual ini di unix.com sebagai gantinya) melakukan POSIX yang setara dengan SysV IPC ipcs
memerintah. Sayangnya, itu tidak pernah muncul untuk OS lain. Paket util-linux saat ini (Januari 2021) yang menyediakan ipcs
hampir tidak menyebutkan antrian POSIX.
Jika Anda memiliki mqueue
terpasang pada /dev/mqueue
, apa itu yang didukung adalah membaca metadata untuk antrean yang ada sebagai file:
[email protected] $ sudo mount -t mqueue mqueue /dev/mqueue
[email protected] $ mq_create -c /myQ
[email protected] $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
QSIZE
sayangnya hanya ukuran dalam byte, bukan pesan; di Linux tidak ada (sampai saat ini, kernel 5.4) tidak ada bidang jumlah pesan – tidak seperti FreeBSD yang menyediakan CURMSG
nilai:
[email protected] $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
Jadi jawabannya harus menjadi "pasang mqueue FS dan gunakan cat
", tapi bukan :(
(Memasang mqueue FS bukanlah prasyarat untuk menggunakan MQ API, ini hanya memungkinkan Anda melakukan beberapa hal "semuanya adalah file".)
Terdapat liputan yang baik tentang antrean pesan dalam buku Antarmuka Pemrograman Linux , termasuk kode sumber C untuk berbagai alat CLI untuk membuat, memeriksa, dan menggunakan antrean pesan. Untungnya bab 52 dari buku yang membahas topik ini saat ini tersedia gratis untuk diunduh. Lihat pmsg_getattr.c
.
Kode referensi kanonis dari Unix Network Programming (Vol 2) Edisi Kedua Stephen. (1999) tersedia di sini, antara lain menyediakan mqgetattr
yang akan melakukan pekerjaan juga (walaupun Anda mungkin perlu memijat beberapa baris di tingkat atas config.h
, #define
untuk berbagai uint
jenis bertentangan dengan header sistem Unix kontemporer).
Ada juga modul Ruby, Perl dan TCL untuk ini, yang Ruby dilengkapi dengan posix-mq-rb
Alat CLI.
$ ipcs -q
akan memberikan statistik antrian pesan dari baris perintah.
$ ipcs -m
akan memberikan statistik memori bersama dari baris perintah.
$ ipcs
akan memberikan semua statistik mekanisme ipc.
Tidak ada perintah yang saya tahu tetapi ada panggilan fungsi libc yang bisa mendapatkan statistik:
orang 3 mq_getattr
mq_getattr() returns an mq_attr structure in the buffer pointed by
attr. This structure is defined as:
struct mq_attr {
long mq_flags; /* Flags: 0 or O_NONBLOCK */
long mq_maxmsg; /* Max. # of messages on queue */
long mq_msgsize; /* Max. message size (bytes) */
long mq_curmsgs; /* # of messages currently in queue */
};