mirror of https://github.com/mkerrisk/man-pages
Overview of POSIX shared memory API.
This commit is contained in:
parent
f93af9c668
commit
095e060410
|
@ -0,0 +1,126 @@
|
|||
'\" t
|
||||
.\" Hey Emacs! This file is -*- nroff -*- source.
|
||||
.\"
|
||||
.\" Copyright (C) 2008, Linux Foundation, written by Michael Kerrisk
|
||||
.\" <mtk.manpages@gmail.com>
|
||||
.\"
|
||||
.\" 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.
|
||||
.\"
|
||||
.TH SHM_OVERVIEW 7 2008-06-25 "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 semaphore 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)
|
Loading…
Reference in New Issue