msgctl(2) manual page
Table of Contents
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 );
msgctl()
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 /* only access permission bits */
msg_qbytes
- This cmd can only be executed by a process that has an effective user
- ID
equal to either that of super user, or to the value of msg_perm.cuid or
msg_perm.uid in the data structure associated with msqid. Only super user
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
equal to either that of super user, or to
the value of msg_perm.cuid or msg_perm.uid in the data structure associated
with msqid. buf is ignored.
Upon successful completion, a value
of 0 is returned. Otherwise, a value of -1 is returned and errno is set to
indicate the error.
msgctl() fails if one or more of the following
are true:
- EACCES
- cmd is IPC_STAT and operation permission is denied to
the calling process (see intro(2)
).
- EFAULT
- buf points to an illegal address.
- EINVAL
- msqid is not a valid message queue identifier.
- EINVAL
- cmd is not
a valid command.
- EINVAL
- cmd is IPC_SET and msg_perm.uid or msg_perm.gid is
not valid.
- EPERM
- cmd is IPC_RMID or IPC_SET. The effective user of the calling
process is not super-user, or the value of msg_perm.cuid or msg_perm.uid in
the data structure associated with msqid.
- EPERM
- cmd is IPC_SET, an attempt
is being made to increase to the value of msg_qbytes, and the effective
user ID
of the calling process is not that of super user.
- EOVERFLOW
- cmd
is IPC_STAT and uid or gid is too large to be stored in the structure pointed
to by buf.
intro(2)
, msgget(2)
, msgop(2)
Table of Contents