re | mmap测试 | 深入理解计算机系统
mmap测试 | 深入理解计算机系统
在复习这本书,顺便写几个测试代码。
用mmap读个文件,在这种情况下使用MAP_SHARED和MAP_PRIVATE都是可以的,但是如果要修改文件内容并写会,则需要MAP_SHARED。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/fcntl.h>
#include <sys/mman.h>
unsigned long get_file_size(const char *filename)
{
struct stat buf;
if(stat(filename, &buf)<0)
{
return 0;
}
return (unsigned long)buf.st_size;
}
int main(int argc, char* argv[]){
if (argc < 2){
exit(-1);
}
printf("> open: %s \n> length: %d \n", argv[1], get_file_size(argv[1]));
int fp = open(argv[1], O_RDWR);
char* addr = mmap(NULL, get_file_size(argv[1]), PROT_READ|PROT_WRITE, MAP_SHARED, fp, 0);
printf("> start addr: %p \n", addr);
printf(" > %s\n", addr);
addr[0] = 'M';
addr[1] = 'z';
munmap(addr, get_file_size(argv[1]));
close(fp);
return 0;
}
有几个讲的比较详细的文章:
mmap: https://blog.csdn.net/yangle4695/article/details/52139585
mmap写回: https://www.cnblogs.com/tsecer/p/10485914.html
本文来自博客园,作者:Mz1,转载请注明原文链接:https://www.cnblogs.com/Mz1-rc/p/17145921.html
如果有问题可以在下方评论或者email:mzi_mzi@163.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了