mmap使用demo
时间: 2024-02-21 22:54:55 浏览: 130
以下是一个使用mmap的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
int main() {
int fd;
struct stat buff;
char *map_ptr;
// 打开文件
fd = open("test.txt", O_RDWR);
if (fd == -1) {
printf("open error: %s\n", strerror(errno));
return -1;
}
// 获取文件大小
if (fstat(fd, &buff) == -1) {
printf("fstat error: %s\n", strerror(errno));
close(fd);
return -1;
}
// 映射文件到内存
map_ptr = mmap(NULL, buff.st_size+10, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
if (map_ptr == MAP_FAILED) {
printf("mmap error: %s\n", strerror(errno));
close(fd);
return -1;
}
// 使用映射区域
printf("mmap content1: %s\n", map_ptr);
memcpy(map_ptr, "LLL", 3);
printf("mmap content2: %s\n", map_ptr);
// 解除映射
if (munmap(map_ptr, buff.st_size+10) == -1) {
printf("munmap error: %s\n", strerror(errno));
close(fd);
return -1;
}
// 关闭文件
close(fd);
return 0;
}
```
阅读全文