Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


msgget(2) — Linux manual page

NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |STANDARDS |HISTORY |NOTES |BUGS |SEE ALSO |COLOPHON

msgget(2)                  System Calls Manualmsgget(2)

NAME        top

       msgget - get a System V message queue identifier

LIBRARY        top

       Standard C library (libc,-lc)

SYNOPSIS        top

#include <sys/msg.h>int msgget(key_tkey, intmsgflg);

DESCRIPTION        top

       Themsgget() system call returns the System V message queue       identifier associated with the value of thekey argument.  It may       be used either to obtain the identifier of a previously created       message queue (whenmsgflg is zero andkey does not have the valueIPC_PRIVATE), or to create a new set.       A new message queue is created ifkey has the valueIPC_PRIVATEorkey isn'tIPC_PRIVATE, no message queue with the given keykey       exists, andIPC_CREATis specified inmsgflg.       Ifmsgflg specifies bothIPC_CREATandIPC_EXCLand a message       queue already exists forkey, thenmsgget() fails witherrno set       toEEXIST.  (This is analogous to the effect of the combinationO_CREAT | O_EXCLforopen(2).)       Upon creation, the least significant bits of the argumentmsgflg       define the permissions of the message queue.  These permission       bits have the same format and semantics as the permissions       specified for themode argument ofopen(2).  (The execute       permissions are not used.)       If a new message queue is created, then its associated data       structuremsqid_ds (seemsgctl(2)) is initialized as follows:       •msg_perm.cuid andmsg_perm.uid are set to the effective user ID          of the calling process.       •msg_perm.cgid andmsg_perm.gid are set to the effective group          ID of the calling process.       •  The least significant 9 bits ofmsg_perm.mode are set to the          least significant 9 bits ofmsgflg.       •msg_qnum,msg_lspid,msg_lrpid,msg_stime, andmsg_rtime are          set to 0.       •msg_ctime is set to the current time.       •msg_qbytes is set to the system limitMSGMNB.       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        top

       On success,msgget() returns the message queue identifier (a       nonnegative integer).  On failure, -1 is returned, anderrno is       set to indicate the error.

ERRORS        top

EACCESA message queue exists forkey, but the calling process              does not have permission to access the queue, and does not              have theCAP_IPC_OWNERcapability in the user namespace              that governs its IPC namespace.EEXIST IPC_CREATandIPC_EXCLwere specified inmsgflg, but a              message queue already exists forkey.ENOENTNo message queue exists forkey andmsgflg did not specifyIPC_CREAT.ENOMEMA message queue has to be created but the system does not              have enough memory for the new data structure.ENOSPCA message queue has to be created but the system limit for              the maximum number of message queues (MSGMNI) would be              exceeded.

STANDARDS        top

       POSIX.1-2008.

HISTORY        top

       POSIX.1-2001, SVr4.Linux       Until Linux 2.3.20, Linux would returnEIDRMfor amsgget() on a       message queue scheduled for deletion.

NOTES        top

IPC_PRIVATEisn't a flag field but akey_t type.  If this special       value is used forkey, the system call ignores everything but the       least significant 9 bits ofmsgflg and creates a new message queue       (on success).       The following is a system limit on message queue resources       affecting amsgget() call:MSGMNISystem-wide limit on the number of message queues.  Before              Linux 3.19, the default value for this limit was calculated              using a formula based on available system memory.  Since              Linux 3.19, the default value is 32,000.  On Linux, this              limit can be read and modified via/proc/sys/kernel/msgmni.

BUGS        top

       The name choiceIPC_PRIVATEwas perhaps unfortunate,IPC_NEWwould       more clearly show its function.

SEE ALSO        top

msgctl(2),msgrcv(2),msgsnd(2),ftok(3),capabilities(7),mq_overview(7),sysvipc(7)

COLOPHON        top

       This page is part of theman-pages (Linux kernel and C library       user-space interface documentation) project.  Information about       the project can be found at        ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report       for this manual page, see       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.       This page was obtained from the tarball man-pages-6.15.tar.gz       fetched from       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on       2025-08-11.  If you discover any rendering problems in this HTML       version of the page, or you believe there is a better or more up-       to-date source for the page, or you have corrections or       improvements to the information in this COLOPHON (which isnot       part of the original manual page), send a mail to       man-pages@man7.orgLinux man-pages 6.15            2025-05-17msgget(2)

Pages that refer to this page:ipcrm(1)ipc(2)msgctl(2)msgop(2)syscalls(2)umask(2)ftok(3)mq_overview(7)sysvipc(7)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp