您好,欢迎来到钮旅网。
搜索
您的当前位置:首页linux c之mmap使用

linux c之mmap使用

来源:钮旅网
/* 
 * File:   main.c
 * Author: root
 *
 * Created on 2013年10月30日, 下午10:24
 */

#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>

/*
 * 
 */
int main(int argc, char** argv) {

    //获取程序目录
    char dirPath[128];
    getcwd(dirPath,128);
    printf("%s\n",dirPath);
    //获取程序路径
    char pathbuf[128];
    readlink("/proc/self/exe",pathbuf,128);
    printf("%s\n",pathbuf);
    
    int fd;
    char* buf;
    int i;
    //取得文件状态)相关函数 fstat,lstat,chmod,chown,readlink,utime
    struct stat statbuf;
    if(stat("test.txt",&statbuf)==-1)
    {
        //文件不存在
        perror("fail to get stat");
        exit(1);
    }
    fd=open("test.txt",O_RDONLY);
    if(fd==-1)
    {
        perror("fail to open");
        exit(1);
    }
    //建立内存映射,)用来将某个文件内容映射到内存中,对该内存区域的存取即是直接对该文件内容的读写。
    buf=(char*)mmap(NULL,statbuf.st_size,PROT_READ,MAP_PRIVATE,fd,0);
    if(buf==MAP_FAILED)
    {
        perror("fail to mmap");
        exit(1);
    }
    i=0;
    while(i<statbuf.st_size)
    {
        printf("%c",buf[i]);
        i++;
    }
    printf("\n");
    //解除内存映射
    if(munmap(buf,statbuf.st_size)==-1)
    {
        perror("fail to munmap");
        exit(1);
    }
    close(fd);
    printf("end!\n");
    return (EXIT_SUCCESS);
}


因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务