msgctl(2) CLIX msgctl(2)
NAME
msgctl - Message control operations
LIBRARY
Standard C Library (libc.a)
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgctl(
int msqid ,
int cmd ,
struct msqid_ds *buf );
PARAMETERS
msqid Represents a message queue ID.
cmd Represents a command.
buf Points to the msqid_ds data structure.
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.
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.cuid
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 superuser, or to the
value of msg_perm.cuid or msg_perm.uid in the data structure
associated with msqid. Only the superuser can raise the value
2/94 - Intergraph Corporation 1
msgctl(2) CLIX msgctl(2)
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
superuser, or to the value of msg_perm.cuid or msg_perm.uid in
the data structure associated with msqid.
EXAMPLES
1. To delete a message queue:
if (msgctl(msg_queue, IPC_RMID, (struct msqid *)0) < 0)
perror("Could not remove message queue");
2. To show status information on a message queue:
struct msqid_ds que_buf;
int msg_queue;
if (msgctl(msg_queue, IPC_STAT, &stat) < 0)
perror("Could not get stats on message queue");
printf("User ID: %d\n", stat.msg_perm.uid);
printf("Group ID: %d\n", stat.msg_perm.gid);
printf("Permissions: %0o\n", stat.msg_perm.mode);
printf("Size of queue: %d\n", stat.msg_qbytes);
RETURN VALUES
Upon successful completion, a value of 0 is returned. Otherwise, a value
of -1 is returned and errno is set to indicate the error.
ERRORS
The msgctl() function fails if one or more of the following are true:
[EINVAL] The value of msqid is not a valid message queue identifier.
[EINVAL] The value of cmd is not a valid command.
[EACCES] The value of cmd is equal to IPC_STAT and {READ} operation
permission is denied to the calling process. (See intro(2).)
[EPERM] The value of cmd is equal to IPC_RMID or IPC_SET. The
effective user ID of the calling process is not equal to that
of superuser, or to the value of msg_perm.cuid or msg_perm.uid
in the data structure associated with msqid.
2 Intergraph Corporation - 2/94
msgctl(2) CLIX msgctl(2)
[EPERM] The value of cmd 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 superuser.
[EFAULT] The buf parameter points to an illegal address.
RELATED INFORMATION
Functions: intro(2), msgget(2), msgop(2)
2/94 - Intergraph Corporation 3