内存映射文件和最大文件大小

时间:2015-11-04 19:55:18

标签: c++ boost memory-mapped-files

我正在使用boost::iostreams::mapped_file_source来创建内存映射文件。超过1024.令我惊讶的是,当我创建了大约1024个内存映射文件时,我的程序抛出一个异常,说明有太多文件打开。经过一些研究后,我发现Ubuntu每个进程的最大文件大小为1024(从ulimit -n找到)。不幸的是,我需要同时打开所有文件。有没有人知道这方面的方法?是否有可能使文件不计入限制?我想把它们组合成一个文件;但是,如果可能的话,我想避免这种情况。我也不想通过更改值来修改操作系统。非常感谢正确方向上的任何一点!

1 个答案:

答案 0 :(得分:3)

为什么需要打开许多映射文件?这似乎非常低效。也许你可以映射(区域)一个大文件?

  

问。我正在考虑尝试将它们合并为一个文件;但是,如果可能的话,我想避免这种情况

那是......胡说八道。表现基本上只会增加。

要记住的一件特别的事情是在你的"大映射文件中对齐不同的区域"多个内存页/磁盘块大小。对于这种粗略对齐,4k应该是一个很好的启动器。