檔案對映
阿新 • • 發佈:2022-05-06
檔案對映:檔案對映將一個檔案的一部分直接對映到呼叫程序的虛擬記憶體中。
一旦一個檔案被對映之後就可以通過在相應的記憶體區域操作位元組來訪問檔案內容了。
#include <sys/mman.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]) { char*addr; int fd; struct stat sb; if(argc !=2 || strcmp(argv[1], "--help") == 0) { printf("%s file\n", argv[0]); exit(1); } fd=open(argv[1], O_RDONLY); if(fd == -1) { printf("open error.\n"); exit(1); } if(fstat(fd, &sb) == -1) { printf("fstat error.\n"); exit(1); } addr = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0); if(addr == MAP_FAILED) { printf("mmap error.\n"); exit(1); } if(write(STDOUT_FILENO, addr, sb.st_size) != sb.st_size) { printf("patial/failed write."); exit(1); } if(munmap(addr, sb.st_size) == -1) { printf("munmap error."); exit(1); } exit(0); }