MSGGET(2) System Calls MSGGET(2)
NAME
msgget - get message queue
SYNOPSIS
#include <sys/msg.h>
int msgget(
key_t key,
int msgflg);
DESCRIPTION
The
msgget() argument 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:
o
key is
IPC_PRIVATE.
o
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:
o
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.
o The low-order 9 bits of
msg_perm.mode are set to the low-
order 9 bits of
msgflg.
o
msg_qnum,
msg_lspid,
msg_lrpid,
msg_stime, and
msg_rtime are set to 0.
o
msg_ctime is set to the current time.
o
msg_qbytes is set to the system limit. See NOTES.
RETURN VALUES
Upon successful completion, a non-negative integer representing a
message queue identifier is returned. Otherwise,
-1 is returned and
errno is set to indicate the error.
ERRORS
The
msgget() function will fail if:
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. See NOTES.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
SEE ALSO
Intro(2),
msgctl(2),
msgrcv(2),
msgsnd(2),
setrctl(2),
ftok(3C),
attributes(7),
standards(7),
rctladm(8)NOTES
The system-defined limit used to initialize
msg_qbytes is the minimum
enforced value of the calling process's
process.max-msg-qbytes resource control.
The system-imposed limit on the number of message queue identifiers
is maintained on a per-project basis using the
project.max-msg-ids resource control. The
zone.max-msg-ids resource control restricts the
total amount of message queue identifiers that can be allocated by a
zone.
See
rctladm(8) and
setrctl(2) for information about using resource
controls.
August 14, 2006 MSGGET(2)