- online man pages   

Linux man pages : msgctl (2)
MSGCTL(2)		   Linux Programmer's Manual		     MSGCTL(2)


msgctl - message control operations


#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> int msgctl(int msqid, int cmd, struct msqid_ds *buf);


This function performs the control operation specified by cmd on the message queue with identifier msqid. Legal values for cmd are: IPC_STAT Copy info from the message queue data structure associated with msqid into the structure pointed to by buf. The caller must have read permission on the message queue. IPC_SET Write the values of some members of the msqid_ds structure pointed to by buf to the message queue data structure, updating also its msg_ctime member. The following members of the struc- ture can be updated: msg_perm.uid msg_perm.gid msg_perm.mode /* only lowest 9-bits */ msg_qbytes The calling process must have appropriate (probably, root) priv- ileges or its effective user-ID must be that of the creator (msg_perm.cuid) or owner (msg_perm.uid) of the message queue. Appropriate (probably, root) privileges are required to raise the msg_qbytes value beyond the system parameter MSGMNB. IPC_RMID Immediately remove the message queue and its associated data structure, awakening all waiting reader and writer processes (with an error return and errno set to EIDRM). The calling pro- cess must have appropriate (probably, root) privileges or its effective user-ID must be either that of the creator or owner of the message queue.


On success, the return value will be 0, otherwise -1 with errno indi- cating the error.


On failure, errno is set to one of the following: EACCES The argument cmd is equal to IPC_STAT but the calling pro- cess does not have read permission on the message queue msqid. EFAULT The argument cmd has the value IPC_SET or IPC_STAT, but the address pointed to by buf isn't accessible. EIDRM The message queue was removed. EINVAL Invalid value for cmd or msqid. EPERM The argument cmd has the value IPC_SET or IPC_RMID, but the calling process has insufficient privileges to execute the command.


The IPC_INFO, MSG_STAT and MSG_INFO control calls are used by the ipcs(8) program to provide information on allocated resources. In the future these may be modified as needed or moved to a proc file system interface. Various fields in a struct msqid_ds were shorts under Linux 2.2 and have become longs under Linux 2.4. To take advantage of this, a recom- pilation under glibc-2.1.91 or later should suffice. (The kernel dis- tinguishes old and new calls by a IPC_64 flag in cmd.)


SVr4, SVID. SVID does not document the EIDRM error condition.


ipc(5), msgget(2), msgsnd(2), msgrcv(2) Linux 2.4.1 2001-02-18 MSGCTL(2)