读取映射文件并将其存储在缓冲区中

时间:2014-06-22 12:58:50

标签: c linux mmap

有人可以通过使用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);
}

1 个答案:

答案 0 :(得分:0)

很抱歉,这可能不是一个完整的解决方案,但我没有足够的声誉来添加评论。

如果您需要从mmaped文件中读取数据(假设您已在文件上调用mmap()),则不需要read()系统调用;你只需要将addr中的内容复制到buff。

如果您需要read()系统调用将数据从文件复制到缓冲区,则不需要mmap();您应该对文件执行open()以获取fd,然后从fd到缓冲区执行read()数据。