msgctl(2) System Calls Manual msgctl(2) msgctl - System V (libc -lc) #include int msgctl(int msqid, int op, struct msqid_ds *buf); msgctl() op System V msqid. msqid_ds : struct msqid_ds { struct ipc_perm msg_perm; /* Ownership and permissions */ time_t msg_stime; /* Time of last msgsnd(2) */ time_t msg_rtime; /* Time of last msgrcv(2) */ time_t msg_ctime; /* Time of creation or last modification by msgctl() */ unsigned long msg_cbytes; /* # of bytes in queue */ msgqnum_t msg_qnum; /* # number of messages in queue */ msglen_t msg_qbytes; /* Maximum # of bytes in queue */ pid_t msg_lspid; /* PID of last msgsnd(2) */ pid_t msg_lrpid; /* PID of last msgrcv(2) */ }; msqid_ds : msg_perm ipc_perm ( ) . msg_stime msgsnd(2). msg_rtime msgrcv(2). msg_ctime IPC_SET msgctl(). msg_cbytes . POSIX. msg_qnum . msg_qbytes . msg_lspid msgsnd(2). msg_lrpid msgrcv(2). ipc_perm ( IPC_SET): struct ipc_perm { key_t __key; /* Key supplied to msgget(2) */ uid_t uid; /* Effective UID of owner */ gid_t gid; /* Effective GID of owner */ uid_t cuid; /* Effective UID of creator */ gid_t cgid; /* Effective GID of creator */ unsigned short mode; /* Permissions */ unsigned short __seq; /* Sequence number */ }; 9 mode ipc_perm . : 0400 0200 0040 0020 0004 0002 0100 0010 0001 ( ) . op : IPC_STAT msqid msqid_ds buf. . IPC_SET msqid_ds buf msg_ctime . : msg_qbytes msg_perm.uid msg_perm.gid ( 9 ) msg_perm.mode. UID (msg_perm.uid) (msg_perm.cuid) . (: CAP_SYS_RESOURCE) msg_qbytes MSGMNB. IPC_RMID ( errno EIDRM). . msgctl() . IPC_INFO ( ) buf. msginfo ( ) _GNU_SOURCE: struct msginfo { int msgpool; /* Size in kibibytes of buffer pool used to hold message data; unused within kernel */ int msgmap; /* Maximum number of entries in message map; unused within kernel */ int msgmax; /* Maximum number of bytes that can be written in a single message */ int msgmnb; /* Maximum number of bytes that can be written to queue; used to initialize msg_qbytes during queue creation (msgget(2)) */ int msgmni; /* Maximum number of message queues */ int msgssz; /* Message segment size; unused within kernel */ int msgtql; /* Maximum number of messages on all queues in system; unused within kernel */ unsigned short msgseg; /* Maximum number of segments; unused within kernel */ }; msgmni msgmax msgmnb /proc proc(5) . MSG_INFO ( ) msginfo IPC_INFO : msgpool msgmap msgtql . MSG_STAT ( ) msqid_ds IPC_STAT. msqid . MSG_STAT_ANY ( 4.17) msqid_ds MSG_STAT. msg_perm.mode msqid ( /proc/sysvipc/msg ). IPC_STAT IPC_SET IPC_RMID 0. IPC_INFO MSG_INFO . ( MSG_STAT MSG_STAT_ANY .) MSG_STAT MSG_STAT_ANY msqid. -1 errno . EACCES op IPC_STAT MSG_STAT msqid CAP_IPC_OWNER IPC . EFAULT op IPC_SET IPC_STAT buf . EIDRM . EINVAL op msqid. : MSG_STAT msqid . EPERM op IPC_SET IPC_RMID ( msg_perm.cuid) ( msg_perm.uid) (: CAP_SYS_ADMIN). EPERM (IPC_SET) msg_qbytes MSGMNB (: CAP_SYS_RESOURCE). POSIX.1-2024 XSI. SVr4, SUSv1, POSIX.1-2001 XSI. struct msqid_ds short 2.2 long 2.4. glibc-2.1.91 . ( IPC_64 op.) IPC_INFO MSG_STAT MSG_INFO ipcs(1) . /proc. msgget(2), msgrcv(2), msgsnd(2), capabilities(7), mq_overview(7), sysvipc(7) 3 . . : . 6.18 11 2026 msgctl(2)