명령을 통해 System V 메시지 대기열의 세부 정보를 볼 수 있습니다 ipcs
. Linux에서 POSIX 메시지 대기열을 보는 명령이 있습니까?
답변1
운좋게 사용하게 된다면HP-UX, 주문하다pipcs
(PDF)(죄송합니다. 링크가 깨져서 현재 보관 파일이 없습니다., 바라보다이것unix.com의 매뉴얼 페이지)는 SysV IPC 명령과 동등한 POSIX를 구현합니다 ipcs
. 안타깝게도 다른 운영 체제에는 적용되지 않았습니다. 현재(2021년 1월)유틸리티Linux제공된 패키지에는 ipcs
POSIX mqueue가 거의 언급되어 있지 않습니다.
mqueue
설치 했다면 /dev/mqueue
어떡하지?예기존 대기열의 메타데이터를 파일로 읽기 지원:
user@linux $ sudo mount -t mqueue mqueue /dev/mqueue
user@linux $ mq_create -c /myQ
user@linux $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
불행하게도 이는 QSIZE
메시지 크기가 아닌 바이트 단위의 크기일 뿐입니다. Linux(현재 커널 5.4)에는 메시지 수 필드가 없습니다.FreeBSD이는 다음과 같은 CURMSG
값을 제공합니다.
user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
그래서 대답은~해야 한다"mqueue FS 마운트 및 사용 cat
"이지만 그렇지 않습니다. :(
(mqueue FS를 설치하는 것은 MQ API를 사용하기 위한 전제 조건이 아니며 단지 "모든 것이 파일입니다"라는 작업을 수행할 수 있게 해줍니다.)
이 책에는 메시지 대기열에 대한 좋은 소개가 있습니다.리눅스 프로그래밍 인터페이스에는 메시지 대기열 생성, 검사 및 사용을 위한 다양한 CLI 도구에 대한 C 소스 코드가 포함되어 있습니다. 다행히도 이 주제를 다루는 책의 52장은 현재 무료로 다운로드할 수 있습니다. 바라보다 pmsg_getattr.c
.
Stephen의 표준 참조 코드유닉스 네트워크 프로그래밍(2권) 2판.(1999) 사용 가능여기, 이는 작업을 수행할 수 있는 다른 기능도 제공합니다 ( 다양한 유형의 헤더가 최신 Unix 시스템과 충돌 하므로 최상위 수준 에서 mqgetattr
몇 줄을 수정해야 할 수도 있지만 ).config.h
#define
uint
게다가루비,진주그리고TCLRuby에는 이러한 목적을 위한 모듈이 함께 제공됩니다.posix-mq-rb
CLI 도구.
답변2
$ ipcs -q
메시지 큐 통계는 명령줄에서 제공됩니다.
$ ipcs -m
공유 메모리 통계는 명령줄에서 제공됩니다.
$ ipcs
모든 IPC 메커니즘 통계가 제공됩니다.
답변3
어떤 명령도 모르지만 통계를 얻을 수 있는 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 */
};