SHM_OVERVIEW
Section: Linux Programmer's Manual (7)
Updated: 2010-09-10
Index
Return to Main Contents
 
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)
 - 
Create and open a new object, or open an existing object.
This is analogous to
open(2).
The call returns a file descriptor for use by the other
interfaces listed below.
 - ftruncate(2)
 - 
Set the size of the shared memory object.
(A newly created shared memory object has a length of zero.)
 - mmap(2)
 - 
Map the shared memory object into the virtual address space
of the calling process.
 - munmap(2)
 - 
Unmap the shared memory object from the virtual address space
of the calling process.
 - shm_unlink(3)
 - 
Remove a shared memory object name.
 - close(2)
 - 
Close the file descriptor allocated by
shm_open(3)
when it is no longer needed.
 - fstat(2)
 - 
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)
 - 
To change the ownership of a shared memory object.
 - fchmod(2)
 - 
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)
 
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 file system
On Linux, shared memory objects are created in a
(
tmpfs)
virtual file system, 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 file system.
 
CONFORMING TO
POSIX.1-2001.
 
NOTES
Typically, processes must synchronize their access to a shared
memory object, using, for example, POSIX semaphores.
System V shared memory
(shmget(2),
shmop(2),
etc.) is an older shared memory API.
POSIX shared memory provides a simpler, and better designed 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),
fchown(2),
fstat(2),
ftruncate(2),
mmap(2),
mprotect(2),
munmap(2),
shmget(2),
shmop(2),
shm_open(3),
shm_unlink(3),
sem_overview(7)
 
COLOPHON
This page is part of release 3.35 of the Linux
man-pages
project.
A description of the project,
and information about reporting bugs,
can be found at
http://man7.org/linux/man-pages/.
 Index
- NAME
 - 
 - DESCRIPTION
 - 
- Versions
 - 
 - Persistence
 - 
 - Linking
 - 
 - Accessing shared memory objects via the file system
 - 
 
 - CONFORMING TO
 - 
 - NOTES
 - 
 - SEE ALSO
 - 
 - COLOPHON
 - 
 
      
      
      
      
   
      
      
         
            
            © Andrew Scott 2006 -
            2025, 
            All Rights Reserved