Mmap一个大的1TB文件并写1?

时间:2016-12-09 21:45:27

标签: c file-io posix mmap memset

我是mmap和memset的新手。我已经分配了一个任务来创建一个大文件(1TB),并在我们试图理解其性能时给它写1个。

根据我的理解,我基本上可以使用1Tb来定位文件,然后在C函数中,我可以使用PROT_READ,PROT_WRITE,MAP_SHARED进行mmap,然后使用memset指向memmap的memset,如下所示:

int fd = open(FILEPATH, O_RDWE, (mode_t)0700);
size_t data_length = 1000000000000;
char *data = (char*)mmap(NULL, data_length, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE, fd , 0);
memset(data, '1', data_length);

这是对的吗? 我是否需要同步或任何使数据持久化的内容?

如果是这样,我基本上写了一个1TB文件,然后为什么我的功能在瞬间运行。 我试图捕获输出文件,确实有1个,只是我的终端在几秒钟之后就崩溃了,但数据实际上已经写完了。

我是否正确地执行此操作,或者我是否应该将数据写入内存而不是memset。如果是这样,我该怎么做?

感谢您的帮助。

0 个答案:

没有答案