msgget(2) manual page
Table of Contents
msgget - get message queue
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
msgget() 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:
- key
- is IPC_PRIVATE.
- key
- does not already
have a message queue identifier associated with it, and (msgflg&IPC_CREAT)
is true.
On creation, the data structure associated with the new message
queue identifier is initialized as follows:
- msg_perm.cuid, msg_perm.uid,
- msg_perm.cgid, and msg_perm.gid are set 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 to the low-order 9 bits of msgflg.
- msg_qnum, msg_lspid, msg_lrpid,
- msg_stime, and msg_rtime are set to 0.
- msg_ctime
- is set to the current time.
- msg_qbytes
- is set to the system limit.
Upon successful completion,
a non-negative integer, namely a message queue identifier, is returned. Otherwise,
a value of -1 is returned and errno is set to indicate the error.
msgget()
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.
- EEXIST
- A message
queue identifier exists for key but (msgflg&IPC_CREAT) and (msgflg&IPC_EXCL)
are both true.
- 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.
intro(2)
,
msgctl(2)
, msgop(2)
, stdipc(3C)
Table of Contents