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)