mirror of https://github.com/mkerrisk/man-pages
127 lines
3.9 KiB
Groff
127 lines
3.9 KiB
Groff
'\" t
|
|
.\" Copyright (C) 2008, Linux Foundation, written by Michael Kerrisk
|
|
.\" <mtk.manpages@gmail.com>
|
|
.\"
|
|
.\" %%%LICENSE_START(VERBATIM)
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
.\" preserved on all copies.
|
|
.\"
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
.\" permission notice identical to this one.
|
|
.\"
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
.\" have taken the same level of care in the production of this manual,
|
|
.\" which is licensed free of charge, as they might when working
|
|
.\" professionally.
|
|
.\"
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
.\" %%%LICENSE_END
|
|
.\"
|
|
.TH SHM_OVERVIEW 7 2010-09-10 "Linux" "Linux Programmer's Manual"
|
|
.SH NAME
|
|
shm_overview \- overview of POSIX shared memory
|
|
.SH DESCRIPTION
|
|
The POSIX shared memory API allows processes to communicate information
|
|
by sharing a region of memory.
|
|
|
|
The interfaces employed in the API are:
|
|
.TP 15
|
|
.BR shm_open (3)
|
|
Create and open a new object, or open an existing object.
|
|
This is analogous to
|
|
.BR open (2).
|
|
The call returns a file descriptor for use by the other
|
|
interfaces listed below.
|
|
.TP
|
|
.BR ftruncate (2)
|
|
Set the size of the shared memory object.
|
|
(A newly created shared memory object has a length of zero.)
|
|
.TP
|
|
.BR mmap (2)
|
|
Map the shared memory object into the virtual address space
|
|
of the calling process.
|
|
.TP
|
|
.BR munmap (2)
|
|
Unmap the shared memory object from the virtual address space
|
|
of the calling process.
|
|
.TP
|
|
.BR shm_unlink (3)
|
|
Remove a shared memory object name.
|
|
.TP
|
|
.BR close (2)
|
|
Close the file descriptor allocated by
|
|
.BR shm_open (3)
|
|
when it is no longer needed.
|
|
.TP
|
|
.BR fstat (2)
|
|
Obtain a
|
|
.I stat
|
|
structure that describes the shared memory object.
|
|
Among the information returned by this call are the object's
|
|
size
|
|
.RI ( st_size ),
|
|
permissions
|
|
.RI ( st_mode ),
|
|
owner
|
|
.RI ( st_uid ),
|
|
and group
|
|
.RI ( st_gid ).
|
|
.TP
|
|
.BR fchown (2)
|
|
To change the ownership of a shared memory object.
|
|
.TP
|
|
.BR fchmod (2)
|
|
To change the permissions of a shared memory object.
|
|
.SS Versions
|
|
POSIX shared memory is supported since Linux 2.4 and glibc 2.2.
|
|
.SS 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
|
|
.BR shm_unlink (3)
|
|
.SS Linking
|
|
Programs using the POSIX shared memory API must be compiled with
|
|
.I cc \-lrt
|
|
to link against the real-time library,
|
|
.IR librt .
|
|
.SS Accessing shared memory objects via the file system
|
|
On Linux, shared memory objects are created in a
|
|
.RI ( tmpfs )
|
|
virtual file system, normally mounted under
|
|
.IR /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.
|
|
.SH CONFORMING TO
|
|
POSIX.1-2001.
|
|
.SH NOTES
|
|
Typically, processes must synchronize their access to a shared
|
|
memory object, using, for example, POSIX semaphores.
|
|
|
|
System V shared memory
|
|
.RB ( shmget (2),
|
|
.BR 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.
|
|
.SH SEE ALSO
|
|
.BR fchmod (2),
|
|
.BR fchown (2),
|
|
.BR fstat (2),
|
|
.BR ftruncate (2),
|
|
.BR mmap (2),
|
|
.BR mprotect (2),
|
|
.BR munmap (2),
|
|
.BR shmget (2),
|
|
.BR shmop (2),
|
|
.BR shm_open (3),
|
|
.BR shm_unlink (3),
|
|
.BR sem_overview (7)
|