msgget [ MPE/iX Developer's Kit Reference Manual Volume II ] MPE/iX 5.0 Documentation
MPE/iX Developer's Kit Reference Manual Volume II
msgget
Returns a message queue identifier.
Syntax
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget (key_t key, int msgflg);
Parameters
key Either a user-defined key value to rendezvous with the message
queue, or IPC_PRIVATE. If IPC_PRIVATE is specified, a new
message queue is created, but other processes cannot
rendezvous by key. Refer to the description of ftok() for
details about obtaining user-defined key values
msgflg Valid flags for this function are:
IPC_CREAT If a message queue is not already associated with
key, a new message queue identifier is allocated
and a message queue and data structure are
associated with it. If a message queue identifier
is already associated with key, and IPC_EXCL is not
specified, msgget() returns the message queue
identifier associated with key.
IPC_EXCL If specified with IPC_CREAT, msgget() returns an
error if a message queue identifier is already
associated with key.
MODE The lower nine bits of msgflg contain access
permission bits (similar to the nine-bit mask found
in file entries). They define access permissions
for the owner, the group, and other users on the
system.
Return Values
>0 Success. A message queue identifier is returned.
-1 An error occurred, and errno is set to indicate the error
condition.
Description
The msgget() function returns a message queue identifier associated with
the value passed in key. A new message queue identifier is allocated and
a message queue and data structure are associated with it if:
* The value passed in key is equal to IPC_PRIVATE.
* The value passed in key does not already have a message queue
identifier associated with it, and msgflg specifies IPC_CREAT.
The data structure associated with the new message queue identifier is
initialized to the following values:
msg_perm.cuid Effective user ID of the calling process (creator user
ID)
msg_perm.uid Effective user ID of the calling process (owner user ID)
msg_perm.cgid Effective group ID of the calling process (creator group
ID)
msg_perm.gid Effective group ID of the calling process (owner group
ID)
msg_perm.mode Low-order 9 bits are set equal to the low-order 9 bits of
msgflg
msg_qnum Zero
msg_lspid Zero
msg_lrpid Zero
msg_stime Zero
msg_rtime Zero
msg_ctime Current time
msg_qbytes System limit
Implementation Considerations
The maximum size of a message is 65536 bytes.
An MPE/iX system manager can use the MPE/iX SVIPC utility to
interactively configure:
* The maximum message size
* The maximum number of bytes on a message queue
* The total number of message queues allowed system wide
Refer to the section "Managing SVID IPC Services" for more information.
Errors
If an error occurs, errno is set to one of the following values.
EACCES CAUSE A message queue identifier exists for key and the
calling process does not have permission (specified
by the low-order 9 bits of msgflg).
ACTION Ensure that the calling process has appropriate
permissions to access the existing message queue
associated with key, or specify a unique key value to
create a new message queue.
EEXIST CAUSE A message queue identifier exists for key and msgflg
specifies both IPC_CREATE and IPC_EXCL.
ACTION To access the existing message queue associated with
key, remove the IPC_EXCL option. Otherwise, a unique
key value must be specified.
ENOENT CAUSE A message queue identifier does not exist for key and
msgflg does not specify IPC_CREATE.
ACTION Specify IPC_CREATE to indicate a message queue should
be created if one does not already exist for the
specified key value.
ENOSPC CAUSE The number of message queue identifiers would exceed
the system-defined limit.
ACTION A new message queue cannot be created unless a
previously allocated message queue is removed.
ESYSERR CAUSE An operating system error occurred that does not map
directly to any of the above errors.
ACTION Examine the MPE/iX process error stack for the type
of system error.
See Also
msgctl(), msgrcv(), msgsnd(), SVID2 (Section 12)
MPE/iX 5.0 Documentation