Linux 利用虚拟内存地址读写文件

这篇博客介绍了如何在Linux环境下利用虚拟内存地址通过mmap函数进行文件的读写操作,包括映射文件到内存、写入数据到虚拟地址以及从虚拟地址读取数据的详细步骤,并解释了mmap函数的参数含义。
摘要由CSDN通过智能技术生成

利用虚拟内存读写文件:

    虚拟地址映射到内存。

       虚拟地址可以映射到文件:可以用内存方式访问文件.

       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);

        //把数据写入虚拟地址

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值