无论出于何种原因,我无法在C中使用mmap打开任何大小的文件。我可能遗漏了一些显而易见的内容,因此非常感谢您的建议。我搜索了类似的回复,并没有找到任何有用的东西。这是我的代码 - 是的,它非常简单。
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char * argv[])
{
void * data;
int fd;
struct stat sb;
fd = open("small.txt", O_RDONLY);
data = mmap(0, sb.st_size, PROT_READ, MAP_SHARED, fd, 0);
if (data == MAP_FAILED) perror("mmap");
return 0;
}
small.txt是一个非常小的文本文件,大小为4.0 K.正在运行的特定机器具有大量RAM(> 500G)。记忆不是问题所在。我意识到这是我正在做的事情,如果你能为我指出,我将非常感激。
我得到的错误是&#34; mmap:无法分配内存&#34;
答案 0 :(得分:0)
也许您可以使用此代码,请参阅此链接:http://man7.org/linux/man-pages/man2/mmap.2.html
int fd;
struct stat sb;
fd = open("small.txt", O_RDONLY);
if (fstat(fd, &sb) == -1) /* To obtain file size */
handle_error("fstat");