【C语言】【unix c】使用mmap将文件映射到进程的虚拟地址空间,然后对内存的操作直接反应到文件中
来源:互联网 发布:cydia数据库错误 编辑:程序博客网 时间:2024/06/05 14:45
二、使用mmap将文件映射到进程的虚拟地址空间,然后对内存的操作直接反应到文件中 将文件hello映射到内存,在内存中对文件的内容进行修改,改变其内容(mmap_file.c) #include <stdio.h> #include <p_file.h> #include <sys/mman.h> int main(void) { int prot = PROT_READ | PROT_WRITE; int flags = MAP_SHARED; //对映射区域的更新给其他进程看,也同步到下层的更新 int fd = open("hello", O_RDWR);//以读写方式打开文件 if(fd == -1) { perror("open"); return -1; } void *p = mmap(NULL, 8, prot, flags, fd, 0);//从文件开始映射8个字节到,flags为MAP_ANONYMOUS时不进行文件映射 if(p == MAP_FAILED) { perror("mmap"); return -1; } int *q = (int *)p; q[0] = 0x30313233; //*((int *)p) = 0x30313233; close(fd); munmap(p, 8); return 0; } 命令: tarena@ubuntu:~/day/day28$ a.out 命令: tarena@ubuntu:~/day/day28$ od -tx1 -tc hello 结果: 0000000 33 32 31 30 6f 0a 3 2 1 0 o \n 0000006 分析:int在内存中占4个字节 0x30313233在内存中的保存是 00110011 00110010 00110001 00110000 33 32 31 30 存文件后转为字符显示 3 2 1 0
阅读全文
0 0
- 【C语言】【unix c】使用mmap将文件映射到进程的虚拟地址空间,然后对内存的操作直接反应到文件中
- 【C语言】【unix c】使用mmap将物理地址映射到进程的虚拟地址空间
- Unix高级编程:文件的基本操作、mmap将文件映射虚拟地址、文件描述符的复制
- c语言对内存地址的直接操作(读ARM有感)
- c语言对内存地址的直接操作(读ARM有感)
- 依次将大文件的各个部分映射到进程中的一个较小的地址空间
- C对内存的使用
- c语言文件操作之将文件1的特定内容输出到文件2
- mmap方法将文件映射到内存
- Unix v6中对虚拟地址映射到物理地址以及在内核态如何访问用户空间的u值
- Linux C:磁盘文件映射到内存/mmap()
- 【UNIX】从一个可执行文件的生成到进程在内存中分布 (中)/文件到进程的转变
- Unix高级编程:malloc内存管理、缓冲机制、mmap内存映射到进程、系统调用文件操作
- linux中使用内存映射(mmap)操作文件的方法
- C语言(对内存的理解)
- C#_对内存的操作(转)
- linux中mmap文件到内存中,该进程发生错误被挂掉后mmap映射的内存能否写回到文件中的问题
- C语言:从键盘输入一个字符串,以感叹号!作为结束标志,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。
- 【C语言】【unix c】lseek(2)重新定位文件的读写位置的使用
- syslog简介——系统日志写入API
- 屠杀者模式下的旧系统改造与联调(一)
- HTML与CSS布局技巧总结
- no input file specified nginx + windows
- 【C语言】【unix c】使用mmap将文件映射到进程的虚拟地址空间,然后对内存的操作直接反应到文件中
- Android进阶封装之一个类实现兼容Android 6.0权限、适配Android7.0 拍照!
- js中遍历
- <笔记>Mysql简单使用
- Sequential模型接口
- C++11:可变参数的模板
- 数据结构--zkw线段树
- NYOJ题目1170-最大的数
- 教你轻松修改React Native端口(如何同时运行多个React Native、8081端口占用问题)