msgget.2 (2010 09)
m
msgget(2) msgget(2)
NAME
msgget - get message queue
SYNOPSIS
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
DESCRIPTION
msgget() returns the message queue identifier associated with key.
A message queue identifier and associated message queue and data structure are created for key if one of
the following is true:
key is equal to
IPC_PRIVATE. This call creates a new identifier, subject to available resources.
The identifier will never be returned by another call to
msgget() until it has been released by a
call to
msgctl(). The identifier should be used among the calling process and its descendents;
however, it is not a requirement. The resource can be accessed by any process having the proper
permissions.
key does not already have a message queue identifier associated with it, and (msgflg
&
IPC_CREAT) is "true".
On creation of a new queue, queue sizes above 64Kbytes can only be constructed when the applica-
tion is compiled with the
__BIGMSGQUEUE_ENABLED
flag defined either explicitly with a
#define in the source or with -D__BIGMSGQUEUE_ENABLED
at compile time.
WARNING: Programs compiled on HP-UX revisions prior to 11i Version 1 use old 16-bit
msqid_ds structure fields (obtained via IPC_STAT of the msgctl() system call) which can
describe queue sizes only up to 64KBytes. Care must be taken such that queues shared with such
programs are not made larger than 64KBytes (i.e., that __BIGMSGQUEUE_ENABLED
is not
specified when compiling the caller of
msgget()). Or, those existing programs should be recom-
piled. Or, the system administrator should restrict the
MSGMNB kernel tunable parameter to
64KBytes or less.
Upon creation, the data structure associated with the new message queue identifier is initialized as fol-
lows:
msg_perm.cuid, msg_perm.uid, msg_perm.cgid
, and msg_perm.gid 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.
msg_qnum, msg_lspid, msg_lrpid, msg_stime, and msg_rtime are set equal to 0.
msg_ctime is set equal to the current time.
msg_qbytes is set equal to the system limit.
Security Restrictions
Some or all of the actions associated with this system call are subject to compartmental restrictions. See
compartments (5) for more information about compartmentalization on systems that support that feature.
Compartmental restrictions can be overridden if the process possesses the COMMALLOWED privilege
(PRIV_COMMALLOWED). Processes owned by the superuser may not have this privilege. Processes
owned by any user may have this privilege, depending on system configuration.
See privileges (5) for more information about privileged access on systems that support fine-grained
privileges.
RETURN VALUE
Upon successful completion, a non-negative integer, namely a message queue identifier, is returned. Oth-
erwise, a value of −1 is returned and errno is set to indicate the error.
ERRORS
msgget() fails if one or more of the following is true:
[EACCES] A message queue identifier exists for key, but operation permission as specified by the
low-order 9 bits of msgflg would not be granted.
HP-UX 11i Version 3: September 2010 − 1 − Hewlett-Packard Company 1