msgctl(S-osr5)
msgctl --
message control operations
Syntax
cc ... -lc
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgctl (msqid, cmd, buf)
int msqid, cmd;
struct msqid_ds *buf;
Description
The
msgctl
system call
provides a variety of message control operations as specified by
cmd.
The following
cmds
are available:
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.
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 low 9 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_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(S-osr5).
The
msgctl
system call
fails if one or more of the following is true:
[EACCES]-
The
cmd
argument
is equal to
IPC_STAT
and
{READ}
operation permission is denied to the calling process.
[EFAULT]-
The
buf
argument
points to an illegal address.
[EINVAL]-
1. The msqid argument is not a valid message queue identifier.
2. The cmd argument is not a valid command.
[EPERM]-
1. The cmd argument is equal to IPC_RMID
or IPC_SET. The effective user ID
of the calling process is not equal to that of super user,
or to the value of
msg_perm.cuid
or
msg_perm.uid
in the data structure associated with
msqid.
2. The cmd argument is equal to 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 equal to that of super user.
Diagnostics
Upon successful completion, a value of 0 is returned. Otherwise, a
value of -1 is returned, and
errno
is set to indicate the error.
See also
Intro(S-osr5),
msgget(S-osr5),
msgop(S-osr5)
Standards conformance
msgctl is conformant with:
X/Open Portability Guide, Issue 3, 1989
.
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 02 June 2005