msgctl
MSGCTL(2) Linux Programmer's Manual MSGCTL(2)
NAME
msgctl - message control operations
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
DESCRIPTION
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.
RETURN VALUE
On success, the return value will be 0, otherwise -1 with errno indi-
cating the error.
ERRORS
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.
NOTES
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.)
CONFORMING TO
SVr4, SVID. SVID does not document the EIDRM error condition.
SEE ALSO
ipc(5), msgget(2), msgsnd(2), msgrcv(2)
Linux 2.4.1 2001-02-18 MSGCTL(2)