msgget(S)
msgget --
get message queue
Synopsis
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
Description
msgget returns the message queue identifier associated with
key.
This identifier is accessible by any process in the system,
subject to normal access restrictions
and the permissions set with msgflg.
A successful call to msgget does not imply access to the
queue in question, only a successful name mapping from
key
to ID.
A message queue identifier and associated message queue and data structure
[see
intro(S)]
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.
Return values
On success, msgget returns a non-negative integer, namely a message queue identifier.
On failure, msgget returns -1 and sets errno to identify the error.
Errors
In the following conditions, msgget fails and sets errno to:
EACCES-
A message queue identifier exists for
key,
but the queue was not created supporting the specified operation
permissions.
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) and (msgflg&IPC_EXCL)
are both true.
References
intro(S),
msgctl(S),
msgop(S),
stdipc(S)
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 01 June 2005