Manual page for msgctl(2)
msgctl - message control operations
SYNOPSIS
#include <sys/msg.h>
int msgctl(int msqid,
int cmd,
struct msqid_ds *buf );
DESCRIPTION
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.
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
-
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.
SEE ALSO
intro.2
msgget.2
msgrcv.2
msgsnd.2
Created by unroff & hp-tools.
© by Hans-Peter Bischof. All Rights Reserved (1997).
Last modified 07/October/97