Shmat 共享内存映射|学习笔记

简介: 快速学习 Shmat 共享内存映射

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频Shmat 共享内存映射】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/11053


Shmat 共享内存映射

 

内容介绍:

一、共享内存映射( attach )

二、实例

 

一、 共享内存映射( attach )

1.格式

#include <sys/types.h>

#include <sys/ shm. h>

void *shmat(int shmid,const  void *shmaddr, int shmflg);

2.功能:

将一个共享内存段映射到调用进程的数据段中。

3.参数:

shmid:共享内存标识符。

shmasdt:共享内存映射地址(若为 NULL 则由系统自动指定),推荐使用 NULL

shuflg:共享内存段的访问权限和映射条件

0:共享内存具有可读可写权限。

SHM_RDONLY:只读。

SHM_RND:( shmaddr 非空时才有效)

没有指定SHM_RND 则此段连接到 shmaddr 所指定的地址上( shmaddr 必需页对齐)。

指定了 SHM_RND 则此段连接到

shmaddr- shmaddr%SHMLBA 所表示的地址上。

4.注意:

shmat 函数使用的时候第二个和第三个参数一般设为 NULL 和0,即系统自动指定共享内存地址,并且共享内存可读可写。

 

二、实例

//此处说明原理不做判断程序是否成功,但在项目中必须做判断

key_t key;  //定义一个变量 key

int shm_id;  //定义一个 id

char *str;      //定义一个指针用于映射

key=ftok(“.”,2);  //传入参数

shm_id=shmget(key,100,IPC_CREAT|0666);//100为共享内存块的大小

str = (char *)shmat(shm.id,NULL,0);//如果成功则返回虚拟地址

相关文章
|
14天前
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
35 6
|
3月前
|
存储 缓存 Linux
用户态内存映射
【9月更文挑战第20天】内存映射不仅包括物理与虚拟内存间的映射,还涉及将文件内容映射至虚拟内存,使得访问内存即可获取文件数据。mmap 系统调用支持将文件或匿名内存映射到进程的虚拟内存空间,通过多级页表机制实现高效地址转换,并利用 TLB 加速映射过程。TLB 作为页表缓存,存储频繁访问的页表项,显著提升了地址转换速度。
|
2月前
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
55 0
|
3月前
|
存储 安全 Linux
将文件映射到内存,像数组一样访问
将文件映射到内存,像数组一样访问
37 0
|
3月前
|
消息中间件 Linux 容器
共享内存的创建和映射过程
【9月更文挑战第1天】消息队列、共享内存及信号量在使用前需生成key并获取唯一ID,均通过`xxxget`函数实现。
|
4月前
|
存储 程序员 编译器
c++学习笔记08 内存分区、new和delete的用法
C++内存管理的学习笔记08,介绍了内存分区的概念,包括代码区、全局区、堆区和栈区,以及如何在堆区使用`new`和`delete`进行内存分配和释放。
51 0
|
6月前
|
存储 编译器 C语言
【C++】学习笔记——内存管理
【C++】学习笔记——内存管理
56 15
|
6月前
|
存储 C++
C primer plus 学习笔记 第12章 存储类别、链接和内存管理
C primer plus 学习笔记 第12章 存储类别、链接和内存管理
|
6月前
|
监控 Linux
深入了解Linux的pmap命令:进程内存映射的利器
`pmap`是Linux下分析进程内存映射的工具,显示内存区域、权限、大小等信息。通过`/proc/[pid]/maps`获取数据,特点包括详细、实时和灵活。参数如`-x`显示扩展信息,`-d`显示设备。示例:`pmap -x 1234`查看进程1234的映射。注意权限、实时性和准确性。结合其他工具定期监控,排查内存问题。
|
7月前
内存映射mmap拓展
内存映射mmap拓展

热门文章

最新文章