SHM_OVERVIEW(7) 2008-06-25
NAME
shm_overview —— POSIX共享内存概述
DESCRIPTION
POSIX共享内存API允许矜持通过共享的内存区域交换信息。
此接口提供的API有:
shm_open(3) 创建和打开一个新的对象,或打开一个已存在的对象。这与open(2)类似。此调用返回一个文件描述符供下列接口使用。
ftruncate(2) 设置共享内存对象的大小。(一个新创建的共享内存对象具有0长度。)
mmap(2) 映射共享内存对象到调用进程的虚拟地址空间。
munmap(2) 解除调用进程虚拟空间与共享内存对象的映射。
shm_unlink(3) 移除共享内存对象的名字。
close(2) 关闭shm_open分配的文件描述符,在不再需要它之后。
fstat(2) 获取描述共享内存对象的stat结构。此调用返回的有效信息有对象大小(st_size),权限(st_mode),属主(st_uid),属组(st_gid)。
fchown(2) 改变共享内存对象的所有者。
fchmod(2) 改变共享内存对象的访问权限。
版本
POSIX共享内存从Linux2.4和glibc 2.2开始支持。
持久性
POSIX共享内存对象有内核持久性:一个共享内存对象在系统关闭之前一直存在,直到所有进程都解除了映射,且被shm_unlink删除。
链接
使用POSIX共享内存API的程序必须这样编译cc -lrt以链接到实时库librt。
通过文件系统访问共享内存对象
Linux下,共享内存对象在虚拟文件系统中创建,通常挂载在/dev/shm。内核2.6.19以后,Linux支持使用访问控制列表(ACLs)控制虚拟文件系统中的对象权限。
CONFORMING TO
POSIX.1-2001.
NOTES
典型的,进程必须同步访问一个共享内存对象,比如POSIX信号量。
System V共享内存(shmget,shmop等)是更老一些的信号量API。POSIX共享内存提供一个简单的,设计得更好的接口,但POSIX共享内存不如System V共享内存那样广泛被支持。
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_over‐
view(7)
COLOPHON
This page is part of release 3.23 of the Linux man-pages project. A
description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.