linux下c通过虚拟地址映射读写文件
来源:互联网 发布:淘宝怎么上传详情页 编辑:程序博客网 时间:2024/06/12 21:22
#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<sys/stat.h>#include<string.h>#include<sys/mman.h>struct stu{char name[20];int age;float score;};//1 打开文件,2 映射到虚拟地址,3 写入数据,4 卸载虚拟地址,5关闭文件main(){int fd;struct stu *s;struct stat st;int size;int count;struct stu record;memset(&record,0,sizeof(struct stu));fd=open("newstu.dat",O_RDWR|O_CREAT|O_EXCL,0666);if(fd==-1){fd=open("newstu.dat",O_RDWR);if(fd==-1) printf("::%m\n"),exit(-1);}fstat(fd,&st);size=st.st_size;//原大小 count=size/sizeof(struct stu);ftruncate(fd,size+sizeof(struct stu));;//改变文件大小,在munmap前调用就行,+ 就是增大,-就是减小s=mmap(0,size+sizeof(struct stu),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);//*printf("输入姓名:");scanf("%s",s[count].name);printf("输入年龄:");scanf("%s",&(s[count].age)); printf("输入分数:");scanf("%f",&(s[count].score));//*/int i;for(i=0;i<count-1;i++){printf("%s,%d,%.2f\n",s[i].name,s[i].age,s[i].score);}munmap(s,size+sizeof(struct stu));close(fd);}
//makefile文件
map_write:map_write.c
gcc map_write.c -o main
[pkm@linux ~/files]make map_write
gcc map_write.c -o main
- linux下c通过虚拟地址映射读写文件
- Linux下虚拟地址映射
- Linux下的虚拟地址映射详解(一)逻辑地址到线性地址的映射
- Linux下的虚拟地址映射详解(一)逻辑地址到线性地址的映射
- C++_IA32体系linux系统虚拟地址映射
- IA32体系32位Linux系统虚拟地址映射下
- Linux下的虚拟地址映射详解(二)线性地址到物理地址的映射
- Linux下的虚拟地址映射详解(二)线性地址到物理地址的映射
- linux c 通过内存映射,操作文件
- linux虚拟进程地址映射机制
- linux虚拟进程地址映射机制
- 32位Linux系统虚拟地址映射
- Linux下C 文件读写程序
- linux C语言 文件描述符 读写地址分析
- 【续】linux C语言 文件描述符 读写地址分析
- 通过windbg查看虚拟地址到物理地址的映射过程
- Linux下的地址映射
- Linux下地址映射原理
- jQuery选择器和方法
- 建立XMLHttpRequest对象
- Git常用命令(转)
- HIVE 自定义函数 UDF
- 不要停留在表面 --论程序员的专研精神
- linux下c通过虚拟地址映射读写文件
- Java线程:新特征-线程池
- fortran open使用
- 中国远征军灵位首次归国
- Windows编程入门(5)MFC程序最小托盘化
- Java线程池学习
- SSH Secure Shell Client中文乱码的解决方法
- 线程池ThreadPoolExecutor使用简介
- ring0实现进程的隐藏