[  Previous  |
Next  |
Contents  |
Glossary  |
Home  |
Search  ]
AIX Version 4.3 Base Operating System and Extensions Technical Reference, Volume 1
msgget Subroutine
Purpose
Gets a message queue identifier.
Library
Standard C Library (libc.a)
Syntax
#include <sys/msg.h>
int msgget (Key, MessageFlag)
key_t Key;
int MessageFlag;
Description
The msgget subroutine returns the 
message queue identifier associated with the specified Key parameter. 
A message queue identifier, associated message 
queue, and data structure are created for the value of the Key parameter if 
one of the following conditions is true:
- The Key parameter is equal to the 
IPC_PRIVATE value.
 
- The Key parameter does not already have a message 
queue identifier associated with it, and the IPC_CREAT value is set.
 
Upon creation, the data structure associated with 
the new message queue identifier is initialized as follows:
- The msg_perm.cuid
, 
msg_perm.uid
, msg_perm.cgid
, and msg_perm.gid
 
fields are set equal to the effective user ID and effective group ID, respectively, 
of the calling process.
 
- The low-order 9 bits of the msg_perm.mode
 
field are set equal to the low-order 9 bits of the MessageFlag parameter.
 
- The msg_qnum
, msg_lspid
, 
msg_lrpid
, msg_stime
, and msg_rtime
 fields are 
set equal to 0.
 
- The msg_ctime
 field is set equal to the 
current time.
 
- The msg_qbytes
 field is set equal to the 
system limit.
 
The msgget subroutine performs the following 
actions:
- The msgget subroutine either finds or creates 
(depending on the value of the MessageFlag parameter) a queue with the Key parameter.
 
- The msgget subroutine returns the ID of the queue 
header to its caller.
 
The following limits apply to the message queue:
- Maximum message size is 
4 Mega
 bytes.
 
- Maximum number of messages per queue is 8192.
 
- Maximum number of message queue IDs is 4096.
 
Parameters
| Key | 
  Specifies either the value IPC_PRIVATE or an Interprocess 
Communication (IPC) key constructed by the ftok subroutine (or by a similar algorithm).  | 
| MessageFlag | 
  Constructed by logically ORing one or more of the following values:
- IPC_CREAT
 
-   Creates the data structure if it does not already exist.
 
- IPC_EXCL
 
-   Causes the msgget subroutine to fail if the IPC_CREAT value 
is also set and the data structure already exists.
 
- S_IRUSR
 
-   Permits the process that owns the data structure to read it.
 
- S_IWUSR
 
-   Permits the process that owns the data structure to modify it.
 
- S_IRGRP
 
-   Permits the group associated with the data structure to read it.
 
- S_IWGRP
 
-   Permits the group associated with the data structure to modify it.
 
- S_IROTH
 
-   Permits others to read the data structure.
 
- S_IWOTH
 
-   Permits others to modify the data structure.
  
Values that begin with S_I are defined in the sys/mode.h file and are 
a subset of the access permissions that apply to files. 
 | 
Return Values
Upon successful completion, the msgget 
subroutine returns a message queue identifier. Otherwise, a value of -1 is returned 
and the errno global variable is set to indicate the error.
Error Codes
The msgget subroutine is unsuccessful if 
any of the following conditions is true:
| EACCES | 
  A message queue identifier exists for the Key parameter, but 
operation permission as specified by the low-order 9 bits of the MessageFlag 
parameter is not granted. | 
| ENOENT | 
  A message queue identifier does not exist for the Key parameter and 
the IPC_CREAT value is not set. | 
| 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 the Key parameter, and both 
IPC_CREAT and IPC_EXCL values are set. | 
Implementation Specifics
This subroutine is part of Base Operating 
System (BOS) Runtime.
Related Information
The ftok 
subroutine, msgctl subroutine, msgrcv subroutine, msgsnd subroutine, msgxrcv subroutine.
The mode.h file.
[  Previous  |
Next  |
Contents  |
Glossary  |
Home  |
Search  ]