답변:
내가 아는 명령은 없지만 통계를 얻을 수있는 libc 함수 호출이 있습니다.
남자 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 */
};
운이 좋으면 HP-UX 를 사용 하면 명령 pipcs
(PDF) 은 SysV IPC ipcs
명령 과 동등한 POSIX를 수행합니다 . 안타깝게도 다른 OS에는 나타나지 않았습니다. POSIX mqueue를 거의 언급하지 않는 현재 (2013 년 3 월) util-linux 패키지 ipcs
.
에 mqueue
마운트 한 경우 /dev/mqueue
지원되는 것은 단순히 큐를 파일로 읽는 것입니다.
user@linux $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
는 QSIZE
불행하게도 바이트가 아닌 메시지의 크기; Linux에는 값 을 제공하는 FreeBSD 와 달리 아직 메시지 수 필드가 없습니다 CURMSG
.
user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
따라서 대답 은 "mqueue FS를 마운트하고 사용 cat
"해야하지만 그렇지 않습니다.
mqueue FS를 마운트하는 것은 MQ API를 사용하기위한 전제 조건이 아니며 "모든 것이 파일"인 작업 만 수행 할 수 있습니다.
큐를 실제로 모니터해야하는 경우 Linux Programming Interface 책 에는 메시지 큐를 작성, 검사 및 사용하기위한 다양한 CLI 도구에 대한 C 소스 코드가 있습니다. 이 주제를 다루는이 책의 52 장은 현재 무료로 다운로드 할 수 있습니다. 참조하십시오 pmsg_getattr.c
.
Stephen의 Unix Network Programming (Vol 2) 2nd Ed. 의 표준 참조 코드 (1999)는 여기 에서 사용할 수 있으며 , mqgetattr
작업을 수행하는 다른 것들도 제공합니다 (최상의 레벨에서 두 줄을 마사지해야하지만 config.h
, #define
다양한 uint
유형 의 경우 현대 유닉스 시스템 헤더와 충돌합니다).
도 있습니다 루비 , 펄 와 TCL 이에 대한 모듈, 루비 하나가되어 posix-mq-rb
CLI 도구입니다.