shm_overview - overview of POSIX shared memory
The POSIX shared memory API allows processes to communicate information by
sharing a region of memory.
The interfaces employed in the API are:
POSIX shared memory is supported since Linux 2.4 and glibc 2.2.
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)
Programs using the POSIX shared memory API must be compiled with cc -lrt
to link against the real-time library, librt.
On Linux, shared memory objects are created in a (tmpfs(5)) 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.
Typically, processes must synchronize their access to a shared memory object,
using, for example, POSIX semaphores.
- 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.
- Set the size of the shared memory object. (A newly created shared memory
object has a length of zero.)
- Map the shared memory object into the virtual address space of the calling
- Unmap the shared memory object from the virtual address space of the
- Remove a shared memory object name.
- Close the file descriptor allocated by shm_open(3) when it is no
- 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
- To change the ownership of a shared memory object.
- To change the permissions of a shared memory object.
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
fchmod(2), fchown(2), fstat(2), ftruncate(2),
mmap(2), mprotect(2), munmap(2), shmget(2),
shmop(2), shm_open(3), shm_unlink(3),
This page is part of release 5.05 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/.