用户空间用的mmap函数,是glibc 提供的
声明通过 man mmap 查找
#include void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); mmap 其中的一个用途(共享文件映射/私有文件映射) 是 访问文件 demo #include #include #include #include #include #include #include #include int main(int argc, char * argv[]) { int fd, nread; struct stat sb; char *mapped; //打开文件 if((fd = open(argv[1], O_RDWR|O_CREAT,S_IRWXU)) < 0){ perror("open") ; return -1; } write(fd,"123456789ABC",strlen("123456789ABC")); //获取文件的属性 if((fstat(fd, &sb)) == -1 ){ perror("fstat") ; return -2; } if (sb.st_size == 0) sb.st_size == 0x1000; //将文件映射至进程的地址空间 if((mapped = mmap(NULL, sb.st_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) ==(void*) -1){ perror("mmap") ; return -3; } //修改N个字符,同步到磁盘文件 mapped[0] = 'h'; mapped[1] = 'e'; mapped[2] = 'l'; mapped[3] = 'l'; mapped[4] = 'o'; mapped[5] = ' '; mapped[6] = 'W'; mapped[7] = 'o'; mapped[8] = 'r'; mapped[9] = 'l'; mapped[10] = 'd'; if((msync((void *)mapped, sb.st_size, MS_SYNC)) == -1){ perror("msync") ; return -4; //释放存储映射区 if((munmap((void *)mapped,sb.st_size)) == -1){ perror("munmap"); return -5; } } close(fd); return 0; }
上一篇:OK6410A 开发板 (八) 97 linux-5.11 OK6410A glibc提供的mmap的四种用途
下一篇:OK6410A 开发板 (八) 95 linux-5.11 OK6410A linux高速缓存
推荐阅读最新更新时间:2024-11-17 23:12
设计资源 培训 开发板 精华推荐
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件
- 意法半导体IO-Link执行器电路板为工业监控和设备厂商带来一站式参考设计
- Melexis采用无磁芯技术缩小电流感测装置尺寸
- 千丘智能侍淳博:用数字疗法,点亮“孤独症”儿童的光
- 数药智能冯尚:ADHD数字疗法正为儿童“多动症”提供更有效便捷服务
- Vicor高性能电源模块助力低空航空电子设备和 EVTOL的发展
- 创实技术electronica 2024首秀:加速国内分销商海外拓展之路
- “跨芯片”量子纠缠实现 有助建构更强大的量子计算能力
- 力源带你了解安森美半导体开发神器——高度灵活的物联网开发套件( IDK )!看视频轻松答题享好礼!
- 【抢楼有奖】聊聊对光电子的认识!
- 有奖直播:基于GaN 的高频(1.2MHz)高效率 1.6kW 高密度临界模式 (CrM) 图腾柱功率因数校正 (PFC)转换器的应用介绍
- 提出你的电源问题&技术解答,提升自我电源知识,赢取好礼
- 分享、评论《Vishay光电子博文》尽享精彩好礼!
- TI MCU 推新了!八月直播揭秘新特性~报名观看赢好礼!
- 轻松注册世健eSHOP,百份奖品大派送!惊喜不断,好礼无限!ipad air2等你拿!
- 跟帖晒单有礼《MCU工程师炼成记》
- VISHAY新能源主题月,幸运闯关赢大奖!