Provided by: manpages-posix-dev_2013a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of
       this interface may differ (consult the corresponding Linux  manual  page  for  details  of
       Linux behavior), or the interface may not be implemented on Linux.

NAME

       shmget — get an XSI shared memory segment

SYNOPSIS

       #include <sys/shm.h>

       int shmget(key_t key, size_t size, int shmflg);

DESCRIPTION

       The  shmget()  function  operates on XSI shared memory (see the Base Definitions volume of
       POSIX.1‐2008, Section 3.342, Shared  Memory  Object).   It  is  unspecified  whether  this
       function  interoperates with the realtime interprocess communication facilities defined in
       Section 2.8, Realtime.

       The shmget() function shall return the shared memory identifier associated with key.

       A shared memory identifier, associated data structure, and shared  memory  segment  of  at
       least size bytes (see <sys/shm.h>) are created for key if one of the following is true:

        *  The argument key is equal to IPC_PRIVATE.

        *  The  argument  key does not already have a shared memory identifier associated with it
           and (shmflg &IPC_CREAT) is non-zero.

       Upon creation, the data structure associated with the new shared memory  identifier  shall
       be initialized as follows:

        *  The  values of shm_perm.cuid, shm_perm.uid, shm_perm.cgid, and shm_perm.gid are set to
           the effective user ID and effective group ID, respectively, of the calling process.

        *  The low-order nine bits of shm_perm.mode are set to the low-order nine bits of shmflg.

        *  The value of shm_segsz is set to the value of size.

        *  The values of shm_lpid, shm_nattch, shm_atime, and shm_dtime are set to 0.

        *  The value of shm_ctime is set to the current time, as described in Section 2.7.1,  IPC
           General Description.

       When the shared memory segment is created, it shall be initialized with all zero values.

RETURN VALUE

       Upon  successful completion, shmget() shall return a non-negative integer, namely a shared
       memory identifier; otherwise, it shall return −1 and set errno to indicate the error.

ERRORS

       The shmget() function shall fail if:

       EACCES A shared memory identifier exists for key but operation permission as specified  by
              the  low-order  nine  bits  of  shmflg  would  not be granted; see Section 2.7, XSI
              Interprocess Communication.

       EEXIST A shared memory identifier exists for the  argument  key  but  (shmflg  &IPC_CREAT)
              &&(shmflg &IPC_EXCL) is non-zero.

       EINVAL A  shared  memory  segment  is to be created and the value of size is less than the
              system-imposed minimum or greater than the system-imposed maximum.

       EINVAL No shared memory segment is to be created and a shared memory  segment  exists  for
              key but the size of the segment associated with it is less than size.

       ENOENT A  shared  memory  identifier  does  not  exist  for  the  argument key and (shmflg
              &IPC_CREAT) is 0.

       ENOMEM A shared memory identifier and associated shared memory segment shall  be  created,
              but the amount of available physical memory is not sufficient to fill the request.

       ENOSPC A  shared  memory  identifier is to be created, but the system-imposed limit on the
              maximum number of allowed shared memory identifiers system-wide would be exceeded.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       The  POSIX  Realtime   Extension   defines   alternative   interfaces   for   interprocess
       communication. Application developers who need to use IPC should design their applications
       so that modules using  the  IPC  routines  described  in  Section  2.7,  XSI  Interprocess
       Communication can be easily modified to use the alternative interfaces.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       Section  2.7,  XSI  Interprocess  Communication,  Section  2.8, Realtime, ftok(), shmat(),
       shmctl(), shmdt(), shm_open(), shm_unlink()

       The Base  Definitions  volume  of  POSIX.1‐2008,  Section  3.342,  Shared  Memory  Object,
       <sys_shm.h>

COPYRIGHT

       Portions  of  this  text  are  reprinted  and  reproduced in electronic form from IEEE Std
       1003.1, 2013 Edition, Standard for Information Technology  --  Portable  Operating  System
       Interface  (POSIX),  The Open Group Base Specifications Issue 7, Copyright (C) 2013 by the
       Institute of Electrical and Electronics Engineers, Inc  and  The  Open  Group.   (This  is
       POSIX.1-2008  with  the  2013  Technical  Corrigendum  1  applied.)  In  the  event of any
       discrepancy between this version and the original IEEE and The Open  Group  Standard,  the
       original  IEEE  and The Open Group Standard is the referee document. The original Standard
       can be obtained online at http://www.unix.org/online.html .

       Any typographical or formatting errors that appear in this page are most  likely  to  have
       been  introduced  during  the conversion of the source files to man page format. To report
       such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .