好好活就是有意义的事,有意义的事就是好好活
Linux手册翻译 —— shm_overview(7)
Linux手册翻译 —— shm_overview(7)

Linux手册翻译 —— shm_overview(7)

shm_overview(7) – Linux manual page (man7.org)

\color{#A00000}{NAME}

shm_overview – overview of POSIX shared memory

\color{#A00000}{DESCRIPTION}

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

其接口主要包括了:

shm_open(3)创建并打开一个新对象,或打开一个现有对象, 类似于 open(2)。 该调用返回一个文件描述符,以供下面列出的其他接口使用。shm_unlink(3) 移除一个共享内存对象
truncate(2) 设置共享内存对象的大小。 (新创建的共享内存对象的长度为零。)
mmap(2)将共享内存对象映射到调用进程的虚拟地址空间; unmap (2) 从调用进程的虚拟地址空间取消映射共享内存对象。

close(2) 关闭由 shm_open(3) 分配的文件描述符,当它不再被需要时

fstat(2) 获取描述共享内存对象的统计结构。 此调用返回的信息包括对象的大小 (st_size)、权限 (st_mode)、所有者 (st_uid) 和组 (st_gid)。

fchown(2) 更改共享内存对象的所有权。

fchmod(2) 更改共享内存对象的权限。

POSIX shared memory is supported since Linux 2.4 and glibc 2.2.

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

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

Accessing shared memory objects via the filesystem

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

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

System V 共享内存(shmget(2)、shmop(2) 等)是较旧的共享内存 API。 POSIX 共享内存提供了一个更简单、设计更好的接口; 另一方面,与 System V 共享内存相比,POSIX 共享内存的可用性稍差(尤其是在旧系统上)。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注