网站首页 > 技术教程 正文
前言
在查看mono源码的时候,发现在加载mscorlib.dll的时候,使用的是内存映射文件.不管在Windows系统还是Linux系统,都有对应内存映射文件API.内存映射文件可以在不同进程间共享数据,效率也是最好的.
简单上手
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
//内存映射文件
int main(int argc, char* argv[])
{
//1. 打开文件,获取文件内核对象
HANDLE hFile = CreateFile(TEXT("1.txt"),
GENERIC_READ| GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
//获取文件大小
DWORD fileSize = GetFileSize(hFile, NULL);
//2. 创建文件映射内核对象
HANDLE hFileMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 100, NULL);
//3. 将文件的数据映射到当前程序的地址空间
PBYTE pbFile = (PBYTE)MapViewOfFile(hFileMap, FILE_MAP_COPY, 0, 0, 0);
for (int i = 0; i < fileSize; i++)
{
printf("%c ", pbFile[i]);
}
//4. 撤销对文件的映射
UnmapViewOfFile(pbFile);
//5. 关闭文件映射内核对象
CloseHandle(hFileMap);
//6. 关闭文件
CloseHandle(hFile);
return 0;
}
代码不多,主要在2和3上,这个demo看起来比起直接读取文件复杂些,具体在后面去更深入地学习内存映射文件,再详细说,还有在Linux如何使用内存映射文件.
个人能力有限,如果您发现有什么不对,请私信我
如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流
- 上一篇: 如何写出优雅的 JS 代码,变量和函数的正确写法
- 下一篇: 嵌入式学习总结5(学好嵌入式的必备知识)
猜你喜欢
- 2024-10-25 Java 17 NIO 知识点 Files 操作(java17课)
- 2024-10-25 PE格式:新建节并插入代码(怎么用pe创建新用户)
- 2024-10-25 入门Java不迷路!一篇教你搞懂Java 「File类」的概述和方法
- 2024-10-25 Qt 之QTemporaryFile用法(创建临时文件)
- 2024-10-25 EndNote使用技巧(4)之七种方法导入文献?一文全搞定
- 2024-10-25 Vue+Element UI实现断点续传、分片上传、秒传
- 2024-10-25 共享数据资源,VBA代码导入已有文本数据文件的方法
- 2024-10-25 (12)文本文件操作参考(文本的基本操作)
- 2024-10-25 使用StreamWriter类的对文件创建写入
- 2024-10-25 大文件上传:秒传、断点续传、分片上传
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)