MSGGET(2) Linux Programmer's Manual MSGGET(2)
NAME
msgget - get a message queue identifier
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
DESCRIPTION
The msgget() system call returns the message queue identifier associated with the
value of the key argument. A new message queue is created if key has the value
IPC_PRIVATE or key isn't IPC_PRIVATE, no message queue with the given key key
exists, and IPC_CREAT is specified in msgflg.
If msgflg specifies both IPC_CREAT and IPC_EXCL and a message queue already exists
for key, then msgget() fails with errno set to EEXIST. (This is analogous to the
effect of the combination O_CREAT | O_EXCL for open(2).)
Upon creation, the least significant bits of the argument msgflg define the permis-
sions of the message queue. These permission bits have the same format and seman-
tics as the permissions specified for the mode argument of open(2). (The execute
permissions are not used.)
If a new message queue is created, then its associated data structure msqid_ds (see
msgctl(2)) is initialised as follows:
msg_perm.cuid and msg_perm.uid are set to the effective user ID of the call-
ing process.
msg_perm.cgid and msg_perm.gid are set to the effective group ID of the
calling process.
The least significant 9 bits of msg_perm.mode are set to the least signifi-
cant 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 MSGMNB.
If the message queue already exists the permissions are verified, and a check is
made to see if it is marked for destruction.
RETURN VALUE
If successful, the return value will be the message queue identifier (a nonnegative
integer), otherwise -1 with errno indicating the error.
ERRORS
On failure, errno is set to one of the following values:
EACCES A message queue exists for key, but the calling process does not have
permission to access the queue, and does not have the CAP_IPC_OWNER
capability.
EEXIST A message queue exists for key and msgflg specified both IPC_CREAT and
IPC_EXCL.
ENOENT No message queue exists for key and msgflg did not specify IPC_CREAT.
ENOMEM A message queue has to be created but the system does not have enough
memory for the new data structure.
ENOSPC A message queue has to be created but the system limit for the maximum
number of message queues (MSGMNI) would be exceeded.
NOTES
IPC_PRIVATE isn't a flag field but a key_t type. If this special value is used for
key, the system call ignores everything but the least significant 9 bits of msgflg
and creates a new message queue (on success).
The following is a system limit on message queue resources affecting a msgget()
call:
MSGMNI System wide maximum number of message queues: policy dependent (on
Linux, this limit can be read and modified via /proc/sys/kernel/msgmni).
BUGS
The name choice IPC_PRIVATE was perhaps unfortunate, IPC_NEW would more clearly
show its function.
CONFORMING TO
SVr4, POSIX.1-2001.
LINUX NOTES
Until version 2.3.20 Linux would return EIDRM for a msgget() on a message queue
scheduled for deletion.
SEE ALSO
msgctl(2), msgrcv(2), msgsnd(2), ftok(3), capabilities(7), mq_overview(7), svipc(7)
Linux 2.6.6 2004-05-27 MSGGET(2)
Generated by $Id: phpMan.php,v 4.54 2007/08/21 09:05:22 chedong Exp $ Author: Che Dong
On Apache/2.2.3 (CentOS)
Under GNU General Public License
2012-05-19 11:34 @172.29.30.71 CrawledBy CCBot/1.0 (+http://www.commoncrawl.org/bot.html)