เราสามารถตรวจสอบรายละเอียดของคิวข้อความระบบ V ด้วยความช่วยเหลือของipcs
คำสั่ง มีคำสั่งใด ๆ เพื่อตรวจสอบคิวข้อความ POSIX ใน Linux หรือไม่
เราสามารถตรวจสอบรายละเอียดของคิวข้อความระบบ V ด้วยความช่วยเหลือของipcs
คำสั่ง มีคำสั่งใด ๆ เพื่อตรวจสอบคิวข้อความ POSIX ใน Linux หรือไม่
คำตอบ:
ไม่มีคำสั่งที่ฉันรู้ แต่มีการเรียกใช้ฟังก์ชัน 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)ทำ POSIX เทียบเท่ากับipcs
คำสั่งSysV IPC น่าเศร้าที่มันไม่เคยปรากฏในระบบปฏิบัติการอื่น แพคเกจutil-linuxปัจจุบัน (มีนาคม 2013) ซึ่งให้การipcs
กล่าวถึงแทบ POSIX
หากคุณได้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
" แต่ไม่ใช่ :(
(การติดตั้ง FS mqueue ไม่ใช่ข้อกำหนดเบื้องต้นสำหรับการใช้ MQ API เพียงให้คุณทำบางสิ่ง "ทุกอย่างเป็นไฟล์")
หากคุณต้องการตรวจสอบคิวจริง ๆ หนังสือThe Linux Programming Interfaceมีซอร์สโค้ด C สำหรับเครื่องมือ CLI ต่างๆเพื่อสร้างตรวจสอบและใช้คิวข้อความ อย่างมีความสุขตอนที่ 52 ของหนังสือที่ครอบคลุมหัวข้อนี้สามารถดาวน์โหลดได้ฟรี pmsg_getattr.c
ดู
รหัสอ้างอิงมาตรฐานจากUnix Network Programming (Vol 2) 2nd Ed (1999) มีให้ที่นี่มันให้สิ่งอื่นmqgetattr
ที่จะทำงานเช่นกัน (แม้ว่าคุณอาจจะต้องนวดสองบรรทัดในระดับบนสุดconfig.h
แต่#define
สำหรับuint
ประเภทต่าง ๆขัดแย้งกับส่วนหัวของระบบยูนิกซ์ร่วมสมัย)
นอกจากนี้ยังมีโมดูลRuby , PerlและTCLสำหรับสิ่งนี้หนึ่งใน Ruby มาพร้อมกับposix-mq-rb
เครื่องมือ CLI