利用虚拟内存读写文件:
虚拟地址映射到内存。
虚拟地址可以映射到文件:可以用内存方式访问文件.
mmap/munmap
实例:使用内存方式写入数据
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/mman.h>
structstu
{
char name[20];
int age;
float score;
};
void main()
{
int fd;
int size,count;
struct stu *s;
struct stat sta;
//打开文件
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”);
exit(-1);
}
}
//得到文件大小,文件记录条数
fstat(fd,&sta);
size=sta.st_size;
count=size/sizeof(struct stu);
ftruncate(fd,size+sizeof(struct stu));
//映射到一个虚拟地址
s=mmap(0,size+sizeof(struct stu),PROT_READ | PROT_WRITE,
MAP_SHARED,fd,0);
//把数据写入虚拟地址