另外参见

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_overview(7)

说明

POSIX共享内存API允许进程通过共享内存区域来传达信息。

API中使用的接口是:

shm_open(3)
创建并打开一个新对象,或打开一个现有对象。这类似于open(2)。该调用返回一个文件描述符,供下面列出的其他接口使用。
ftruncate(2)
设置共享内存对象的大小。 (新创建的共享内存对象的长度为零。)
mmap(2)
将共享内存对象映射到调用进程的虚拟地址空间。
munmap(2)
从调用进程的虚拟地址空间取消映射共享内存对象。
shm_unlink(3)
删除共享内存对象名称。
close(2)
当不再需要shm_open(3)分配的文件描述符时,请关闭它。
fstat(2)
获取描述共享内存对象的统计信息结构。该调用返回的信息包括对象的大小(st_size),权限(st_mode),所有者(st_uid)和组(st_gid)。
fchown(2)
更改共享内存对象的所有权。
fchmod(2)
更改共享内存对象的权限。

Versions

从Linux 2.4和glibc 2.2开始支持POSIX共享内存。

Persistence

POSIX共享内存对象具有内核持久性:一个共享内存对象将一直存在,直到系统关闭或所有进程取消映射该对象并且已使用shm_unlink(3)将其删除为止。

Linking

使用POSIX共享内存API的程序必须使用cc -lrt进行编译,以链接到实时库librt。

Accessing shared memory objects via the filesystem

在Linux上,共享内存对象是在(tmpfs(5))虚拟文件系统中创建的,该文件系统通常挂载在/ dev / shm下。从内核2.6.19开始,Linux支持使用访问控制列表(ACL)来控制虚拟文件系统中对象的权限。

名称

shm_overview-POSIX共享内存概述

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

备注

通常,进程必须使用例如POSIX信号同步对共享内存对象的访问。

System V共享内存(shmget(2),shmop(2)等)是较旧的共享内存API。 POSIX共享内存提供了一个更简单,设计更好的界面;另一方面,POSIX共享内存(特别是在较旧的系统上)的普及程度不及System V共享内存。

SHM_OVERVIEW - Linux手册页

Linux程序员手册 第7部分
更新日期: 2020-08-13

日期:2019-08-20 18:02:01 来源:oir作者:oir