MSGCTL(2) System Calls MSGCTL(2)
NAME
msgctl - message control operations
SYNOPSIS
#include <sys/msg.h>
int msgctl(
int msqid,
int cmd,
struct msqid_ds *buf);
DESCRIPTION
The
msgctl() function provides a variety of message control operations as
specified by
cmd. The following
cmds are available:
IPC_STAT Place the current value of each member of the data structure
associated with
msqid into the structure pointed to by
buf.
The contents of this structure are defined in
Intro(2).
IPC_SET Set the value of the following members of the data structure
associated with
msqid to the corresponding value found in the
structure pointed to by
buf:
msg_perm.uid
msg_perm.gid
msg_perm.mode /* access permission bits only */
msg_qbytes
This command can be executed only by a process that has
either the {
PRIV_IPC_OWNER} privilege or an effective user
ID equal to the value of
msg_perm.cuid or
msg_perm.uid in the
data structure associated with
msqid. Only a process with the
{
PRIV_SYS_IPC_CONFIG} privilege can raise the value of
msg_qbytes.
IPC_RMID Remove the message queue identifier specified by
msqid from
the system and destroy the message queue and data structure
associated with it. This
cmd can only be executed by a
process that has an effective user
ID either with appropriate
privileges asserted in the effective set or equal to the
value of
msg_perm.cuid or
msg_perm.uid in the data structure
associated with
msqid. The
buf argument is ignored.
RETURN VALUES
Upon successful completion,
msgctl() returns
0. Otherwise, it returns
-1 and sets
errno to indicate the error.
ERRORS
The
msgctl() function will fail if:
EACCES The
cmd argument is
IPC_STAT and operation permission is
denied to the calling process (see
Intro(2)).
EFAULT The
buf argument points to an illegal address.
EINVAL The
msqid argument is not a valid message queue identifier;
or the
cmd argument is not a valid command or is
IPC_SET and
msg_perm.uid or
msg_perm.gid is not valid.
EOVERFLOW The
cmd argument is
IPC_STAT and
uid or
gid is too large to
be stored in the structure pointed to by
buf.
EPERM The
cmd argument is
IPC_RMID or
IPC_SET, the
{
PRIV_SYS_IPC_OWNER} privilege is not asserted in the
effective set of the calling process, and is not equal to
the value of
msg_perm.cuid or
msg_perm.uid in the data
structure associated with
msqid.
The
cmd argument is
IPC_SET, an attempt is being made to
increase to the value of
msg_qbytes, and the
{
PRIV_SYS_IPC_CONFIG} privilege is not asserted in the
effective set of the calling process.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
SEE ALSO
Intro(2),
msgget(2),
msgrcv(2),
msgsnd(2),
attributes(7),
privileges(7),
standards(7) March 22, 2004
MSGCTL(2)