首页 > 其他分享 >re | mmap测试 | 深入理解计算机系统

re | mmap测试 | 深入理解计算机系统

时间:2023-02-22 21:13:54浏览次数:44  
标签:计算机系统 addr mmap argv re file include size

mmap测试 | 深入理解计算机系统

在复习这本书,顺便写几个测试代码。

image

用mmap读个文件,在这种情况下使用MAP_SHARED和MAP_PRIVATE都是可以的,但是如果要修改文件内容并写会,则需要MAP_SHARED。
代码如下:

#include <stdio.h>
#include <stdlib.h>

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


unsigned long get_file_size(const char *filename)
{
    struct stat buf;
    if(stat(filename, &buf)<0)
    {
        return 0;
    }
    return (unsigned long)buf.st_size;
}

int main(int argc, char* argv[]){
        if (argc < 2){
                exit(-1);
        }
        printf("> open: %s \n> length: %d \n", argv[1], get_file_size(argv[1]));
        int fp = open(argv[1], O_RDWR);
        char* addr = mmap(NULL, get_file_size(argv[1]), PROT_READ|PROT_WRITE, MAP_SHARED, fp, 0);
        printf("> start addr: %p \n", addr);
        printf("  > %s\n", addr);
        addr[0] = 'M';
        addr[1] = 'z';
        munmap(addr, get_file_size(argv[1]));
        close(fp);

        return 0;
}

有几个讲的比较详细的文章:
mmap: https://blog.csdn.net/yangle4695/article/details/52139585
mmap写回: https://www.cnblogs.com/tsecer/p/10485914.html

标签:计算机系统,addr,mmap,argv,re,file,include,size
From: https://www.cnblogs.com/Mz1-rc/p/17145921.html

相关文章