📄 mmaptest.c
字号:
#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/mman.h>void *addr = (void*)0x10000000, *map_addr;int main(int argc, char** argv){ int fildes, len; struct stat statinfo; char c, buffer[256]; if (argc < 2) { printf("File name is required!\n"); return 0; } if ((fildes = open(argv[1], O_RDWR)) < 0 || fstat(fildes, &statinfo)) { printf("File operation error!\n"); return -1; } len = statinfo.st_size; printf("Pause 1. Press enter to continue...\n"); gets(buffer); if ((map_addr = mmap(addr, len, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, fildes, 0)) == MAP_FAILED) printf("Map failed!\n"); else { printf("Mapped address is %p\n", map_addr); // touch each page of the segment for (int i = 0; i < len; i += 4096) c = ((char*)map_addr)[i]; printf("Pause 2. Press enter to continue...\n"); gets(buffer); // write a character at the beginning of the file ((char*)map_addr)[0] = 'z'; printf("Pause 3. Press enter to exit...\n"); getchar(); munmap(map_addr, statinfo.st_size); } close(fildes); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -