/* Void Main's man pages */

{ phpMan } else { main(); }

Command: man perldoc info search(apropos)  


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 mes-
       sage 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 permissions of the message queue.  These per-
       mission bits have the same format and semantics as the permissions specified for the mode argument of open(2).  (The exe-
       cute permissions are not used.)

       If a new message queue is created, then its associated data structure msqid_ds (see msgctl(2)) is initialized as follows:

              msg_perm.cuid and msg_perm.uid are set to the effective user ID of the calling 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 significant 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 destruc-
       tion.

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.

CONFORMING TO
       SVr4, POSIX.1-2001.

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  every-
       thing 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).

   Linux Notes
       Until version 2.3.20 Linux would return EIDRM for a msgget() on a message queue scheduled for deletion.

BUGS
       The name choice IPC_PRIVATE was perhaps unfortunate, IPC_NEW would more clearly show its function.

SEE ALSO
       msgctl(2), msgrcv(2), msgsnd(2), ftok(3), capabilities(7), mq_overview(7), svipc(7)

COLOPHON
       This page is part of release 3.25 of the Linux man-pages project.  A description of the project,  and  information  about
       reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.



Linux                                                      2004-05-27                                                  MSGGET(2)

Valid XHTML 1.0!Valid CSS!