msgget(2) CLIX msgget(2)
NAME
msgget - Gets message queue
LIBRARY
Standard C Library (libc.a)
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(
key_t key ,
int msgflg );
PARAMETERS
key Specifies a key used by the kernel to uniquely identify a message
queue.
msgflg Stores message passing control commands and operation permission
values.
DESCRIPTION
The msgget() function returns the message queue identifier associated with
key.
A message queue identifier and associated message queue and data structure
(see intro(2)) are created for key if one of the following are true:
⊕ The value of key is equal to IPC_PRIVATE (see the <sys/ipc.h> header
file).
⊕ The value of key does not already have a message queue identifier
associated with it, and (msgflg & IPC_CREAT) is true.
Upon creation, the data structure associated with the new message queue
identifier is initialized as follows:
⊕ The msg_perm.cuid, msg_perm.uid, msg_perm.cgid, and msg_perm.gid
members are set equal to the effective user ID and effective group ID,
respectively, of the calling process.
⊕ The low-order 9 bits of msg_perm.mode are set equal to the low-order 9
bits of msgflg.
2/94 - Intergraph Corporation 1
msgget(2) CLIX msgget(2)
⊕ The msg_qnum ,msg_lspid , msg_lrpid, msg_stime, and msg_rtime members
(see the <msg.h> header file) are set equal to 0.
⊕ The msg_ctime member is set equal to the current time.
⊕ The msg_qbytes member is set equal to the system limit.
EXAMPLES
The following example creates a new message queue with read/write access
for the owner. It creates a message queue if one does not exist, and
fails if the message queue does exist:
int msg_queue;
if ((msg_queue = msgget(75, 0600 | IPC_CREAT | IPC_EXCL)) < 0)
perror("Could not create message queue");
RETURN VALUES
Upon successful completion, a non-negative integer, (a message queue
identifier) is returned. Otherwise, a value of -1 is returned and errno
is set to indicate the error.
ERRORS
The msgget() function fails if one or more of the following are true:
[EACCES] A message queue identifier exists for key, but operation
permission (see intro(2)) as specified by the low-order 9 bits
of msgflg would not be granted.
[ENOENT] A message queue identifier does not exist for key and msgflg &
IPC_CREAT)is false.
[ENOSPC] A message queue identifier is to be created but the system-
imposed limit on the maximum number of allowed message queue
identifiers system wide would be exceeded.
[EEXIST] A message queue identifier exists for key but ((msgflg &
IPC_CREAT) & (msgflg & IPC_EXCL)) is true.
RELATED INFORMATION
Functions: intro(2), msgctl(2), msgop(2)
2 Intergraph Corporation - 2/94