shm_overview - overview of POSIX shared memory
| Use Case | Command | Description |
|---|---|---|
| Create a new shared memory object | shm_open + ftruncate + mmap |
Open/create object, set size, map into process address space |
| Write data to shared memory | memcpy or assignment |
Use mapped memory pointer like regular memory |
| Read data from shared memory | memcpy or direct access |
Access mapped region directly |
| Remove a shared memory object | shm_unlink |
Delete object name; persists until all processes unmap |
| Get object metadata | fstat |
Obtain size, permissions, owner, group |
| Change permissions | fchmod |
Modify access mode of shared memory object |
| Change ownership | fchown |
Modify user/group ownership |
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.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.
⚙️ 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.
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)
Generated by phpman v4.9.26-1-g511901d Author: Che Dong Under GNU General Public License
2026-08-07 01:54 @216.73.216.207
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Enhanced by LLM: deepseek-v4-flash / taotoken.net / www.chedong.com - original format