在使用mmap进行文件映射后,可以通过修改映射内存中的数据来实现对文件的写操作。下面是一个简单的示例代码:
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include <cstring>
int main() {
// 打开文件
int fd = open("example.txt", O_RDWR);
if (fd == -1) {
perror("open");
return 1;
}
// 获取文件大小
off_t size = lseek(fd, 0, SEEK_END);
// 映射文件到内存
void* addr = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if (addr == MAP_FAILED) {
perror("mmap");
close(fd);
return 1;
}
// 在映射内存上进行写操作
char* data = static_cast<char*>(addr);
const char* content = "Hello World!";
strncpy(data, content, strlen(content));
// 解除映射关系并关闭文件
munmap(addr, size);
close(fd);
return 0;
}
该代码打开一个名为”example.txt”的文件,并将其内容用”Hello World!“替换。请确保你有适当的权限来读取和写入该文件。
内容由零声教学AI助手提供,问题来源于学员提问