有人可以通过使用read()系统调用来解释如何实现mread功能。此方法需要读取在mmapped文件中找到的内容并将其读入缓冲区。我可以通过指针访问mmapped文件和缓冲区。 (即void * addr和void * buff)。
您的帮助非常感谢。
到目前为止尝试:
int fd;
if ((fd = open("file.hole",O_RDWR, "rb")) < 0) {
perror("create .hole file error");
exit(EXIT_FAILURE);
}
if (write(fd, addr, count)!= count) {
perror("Cannot write from address");
exit(EXIT_FAILURE);
}
buff = (char*)malloc(count * sizeof(char *));
if (read(fd, buff, count)) {
perror("Cannot read from file descriptor to the buffer");
exit(EXIT_FAILURE);
}
答案 0 :(得分:0)
很抱歉,这可能不是一个完整的解决方案,但我没有足够的声誉来添加评论。
如果您需要从mmaped文件中读取数据(假设您已在文件上调用mmap()
),则不需要read()
系统调用;你只需要将addr中的内容复制到buff。
如果您需要read()
系统调用将数据从文件复制到缓冲区,则不需要mmap()
;您应该对文件执行open()
以获取fd,然后从fd到缓冲区执行read()
数据。