HP-UX Reference (11i v1 00/12) - 2 System Calls (vol 5)
__________________________________________________________________________________________________________________________________________________________________________________________________
__________________________________________________________________________________________________________________________________________________________________________________________________
STANDARD Printed by: Nora Chuang [nchuang] STANDARD
/build/1111/BRICK/man2/!!!intro.2
________________________________________________________________
___ ___
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 application
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 11.11 use old 16-bit msqid_ds structure
fields (obtained via
IPC_STAT of the msgctl(2) 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 recompiled. 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 initializedas follows:
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.
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.
[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’’.
SEE ALSO
ipcrm(1), ipcs(1), msgctl(2), msgop(2), stdipc(3C).
STANDARDS CONFORMANCE
msgget(): SVID2, SVID3, XPG2, XPG3, XPG4
HP-UX Release 11i: December 2000 − 1 − Section 2−−187
___
___