# phpman > info > SHM_OVERVIEW

[SHM_OVERVIEW(7)](https://www.chedong.com/phpMan.php/man/SHMOVERVIEW/7/markdown)            Linux Programmer's Manual           [SHM_OVERVIEW(7)](https://www.chedong.com/phpMan.php/man/SHMOVERVIEW/7/markdown)

NAME
       shm_overview - overview of POSIX shared memory

DESCRIPTION
       The POSIX shared memory API allows processes to communicate information
       by sharing a region of memory.

       The interfaces employed in the API are:

       [shm_open(3)](https://www.chedong.com/phpMan.php/man/shmopen/3/markdown)    Create and open a new object, or open  an  existing  ob-
                      ject.  This is analogous to [open(2)](https://www.chedong.com/phpMan.php/man/open/2/markdown).  The call returns a
                      file descriptor for use by the other  interfaces  listed
                      below.

       [ftruncate(2)](https://www.chedong.com/phpMan.php/man/ftruncate/2/markdown)   Set the size of the shared memory object.  (A newly cre-
                      ated shared memory object has a length of zero.)

       [mmap(2)](https://www.chedong.com/phpMan.php/man/mmap/2/markdown)        Map the shared memory object into  the  virtual  address
                      space of the calling process.

       [munmap(2)](https://www.chedong.com/phpMan.php/man/munmap/2/markdown)      Unmap  the shared memory object from the virtual address
                      space of the calling process.

       [shm_unlink(3)](https://www.chedong.com/phpMan.php/man/shmunlink/3/markdown)  Remove a shared memory object name.

       [close(2)](https://www.chedong.com/phpMan.php/man/close/2/markdown)       Close the file descriptor allocated by [shm_open(3)](https://www.chedong.com/phpMan.php/man/shmopen/3/markdown)  when
                      it is no longer needed.

       [fstat(2)](https://www.chedong.com/phpMan.php/man/fstat/2/markdown)       Obtain a stat structure that describes the shared memory
                      object.  Among the information returned by this call are
                      the  object's  size  (st_size),  permissions  (st_mode),
                      owner (st_uid), and group (st_gid).

       [fchown(2)](https://www.chedong.com/phpMan.php/man/fchown/2/markdown)      To change the ownership of a shared memory object.

       [fchmod(2)](https://www.chedong.com/phpMan.php/man/fchmod/2/markdown)      To change the permissions of a shared memory object.

   Versions
       POSIX shared memory is supported since Linux 2.4 and glibc 2.2.

   Persistence
       POSIX shared memory objects have kernel persistence:  a  shared  memory
       object will exist until the system is shut down, or until all processes
       have unmapped the object and it has been deleted with [shm_unlink(3)](https://www.chedong.com/phpMan.php/man/shmunlink/3/markdown)

   Linking
       Programs using the POSIX shared memory API must  be  compiled  with  cc
       -lrt to link against the real-time library, librt.

   Accessing shared memory objects via the filesystem
       On  Linux,  shared  memory  objects are created in a ([tmpfs(5)](https://www.chedong.com/phpMan.php/man/tmpfs/5/markdown)) virtual
       filesystem, normally mounted  under  /dev/shm.   Since  kernel  2.6.19,
       Linux  supports  the  use of access control lists (ACLs) to control the
       permissions of objects in the virtual filesystem.

NOTES
       Typically, processes must synchronize their access to a  shared  memory
       object, using, for example, POSIX semaphores.

       System  V  shared memory ([shmget(2)](https://www.chedong.com/phpMan.php/man/shmget/2/markdown), [shmop(2)](https://www.chedong.com/phpMan.php/man/shmop/2/markdown), etc.) is an older shared
       memory API.  POSIX shared memory provides a  simpler,  and  better  de-
       signed  interface;  on  the  other hand POSIX shared memory is somewhat
       less widely available (especially  on  older  systems)  than  System  V
       shared memory.

SEE ALSO
       [fchmod(2)](https://www.chedong.com/phpMan.php/man/fchmod/2/markdown),  [fchown(2)](https://www.chedong.com/phpMan.php/man/fchown/2/markdown),  [fstat(2)](https://www.chedong.com/phpMan.php/man/fstat/2/markdown),  [ftruncate(2)](https://www.chedong.com/phpMan.php/man/ftruncate/2/markdown),  [mmap(2)](https://www.chedong.com/phpMan.php/man/mmap/2/markdown), [mprotect(2)](https://www.chedong.com/phpMan.php/man/mprotect/2/markdown),
       [munmap(2)](https://www.chedong.com/phpMan.php/man/munmap/2/markdown), [shmget(2)](https://www.chedong.com/phpMan.php/man/shmget/2/markdown), [shmop(2)](https://www.chedong.com/phpMan.php/man/shmop/2/markdown), [shm_open(3)](https://www.chedong.com/phpMan.php/man/shmopen/3/markdown),  [shm_unlink(3)](https://www.chedong.com/phpMan.php/man/shmunlink/3/markdown),  sem_over-
       [view(7)](https://www.chedong.com/phpMan.php/man/view/7/markdown)

COLOPHON
       This  page  is  part of release 5.10 of the Linux man-pages project.  A
       description of the project, information about reporting bugs,  and  the
       latest     version     of     this    page,    can    be    found    at
       <https://www.kernel.org/doc/man-pages/>.

Linux                             2020-08-13                   [SHM_OVERVIEW(7)](https://www.chedong.com/phpMan.php/man/SHMOVERVIEW/7/markdown)
