Android中的mmap(Memory-mapped file)是一種內存映射文件技術,它允許將一個文件或文件的一部分映射到進程的地址空間中,從而實現高效的文件讀寫操作
#include <fcntl.h>
int fd = open("example.txt", O_RDWR);
#include <sys/mman.h>
size_t length = lseek(fd, 0, SEEK_END); // 獲取文件長度
void *addr = mmap(NULL, length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
這里,PROT_READ
和PROT_WRITE
表示映射區域可讀寫,MAP_SHARED
表示多個進程可以共享這個映射區域。
// 讀取文件內容
char *content = (char *)addr;
printf("File content: %s\n", content);
// 修改文件內容
content[0] = 'A';
printf("Modified file content: %s\n", content);
munmap(addr, length);
close(fd);
注意:在使用mmap時,請確保正確處理錯誤情況,例如文件打開失敗、內存映射創建失敗等。在實際項目中,你可能還需要考慮使用其他同步機制(如信號量、互斥鎖等)來確保多個進程或線程對共享內存區域的正確訪問。