下面是使用mmap创建一个1G文件并写入数据的代码案例:
”`cpp
#include
int main() {
int fd = open("file.txt", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
if (fd == -1) {
std::cerr << "Failed to open file" << std::endl;
return 1;
}
// 将文件大小设为1G
off_t fileSize = 1024 * 1024 * 1024; // 1GB
if (lseek(fd, fileSize - 1, SEEK_SET) == -1) {
std::cerr << "Failed to set file size" << std::endl;
close(fd);
return 1;
}
// 写入一个字节,扩展文件大小到指定大小
if (write(fd, "", 1) != 1) {
std::cerr << "Failed to write data" << std::endl;
close(fd);
return 1;
}
// 使用mmap映射文件到内存
char* map = static_cast<char*>(mmap(nullptr, fileSize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0));
if (map == MAP_FAILED) {
std::cerr << "Failed to mmap file" << std::endl;
close(fd);
return 1;
}
// 写入数据到映射的内存区域
const char* data = "Hello World!";
size_t dataSize = strlen(data);
memcpy(map, data, dataSize);
内容由零声教学AI助手提供,问题来源于学员提问