本篇文章主要介绍了"Linux下C编程-----IO/文件操作/内存映射 实现简单记录存储(3)",主要涉及到方面的内容,对于C/C++jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
利用linux下的文件内存映射可以实现进程共享数据,我们可以把一个文件映射到虚拟内存中使多个进程进行共享,到这里我们大概能想到他能应用到的领域 是很广泛的 主要...
利用linux下的文件内存映射可以实现进程共享数据,我们可以把一个文件映射到虚拟内存中使多个进程进行共享,
到这里我们大概能想到他能应用到的领域 是很广泛的
主要涉及到 mmap munmap msync 三个函数的应用
下面贴代码
下面一段代码是为文件建立一个简单的记录存储,并且通过内存映射修改文件内容
/*************************************************************************
> File Name: memdb.c
> Author:
> Mail:
> Created Time: Fri 13 Feb 2015 03:46:11 AM PST
************************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#define RECORD_NUM 100
#define DATA_FILE "./db.dat"
//定义数据记录
typedef struct
{
int index ;
char str[20];
}RecordData;
int main()
{
FILE*pFile ;
void*pMap=NULL;
int fdFIle;
int i;
RecordData record,*pMappedRecord;
pFile=fopen(DATA_FILE,"w+") ;
if(pFile==NULL)
{
printf("Create File Error\n") ;
return 0;
}
for(i=0;i
我们在另一个进程中可以通过程序查看共享文件内容
/*************************************************************************
> File Name: memdb.c
> Author:
> Mail:
> Created Time: Fri 13 Feb 2015 03:46:11 AM PST
************************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#define RECORD_NUM 100
#define DATA_FILE "./db.dat"
//定义数据记录
typedef struct
{
int index ;
char str[20];
}RecordData;
int main()
{
int i;
void*pMap=NULL;
int fdFIle;
RecordData record,*pMappedRecord;
fdFIle =open(DATA_FILE,O_RDWR) ;
if(fdFIle==-1)
{
printf("Open DataFile Error!\n");
return 0 ;
}
//map file to memory from file offset 0 to end
pMap=mmap(NULL,sizeof(RecordData)*RECORD_NUM,PROT_READ|PROT_WRITE,MAP_SHARED,fdFIle,0) ;
if(pMap==MAP_FAILED)
{
printf("Map file to Virtual Memory Error!\n");
close(fdFIle);
return 0;
}
///get thirty record
pMappedRecord=(struct RecordData*)pMap ;
for(i=0;i
以上就介绍了Linux下C编程-----IO/文件操作/内存映射 实现简单记录存储(3),包括了方面的内容,希望对C/C++jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_113404.html