我是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。如果是这样,我该怎么做?
感谢您的帮助。