Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个程序可以映射相当多(100 个)的大文件,每个文件 10-100MB。我需要同时映射它们。
目前我在程序开始时调用,然后open在程序结束时调用。mmapmunmapclose
open
mmap
munmap
close
通常我必须ulimit -n在运行程序之前调整运行的打开文件限制。
ulimit -n
问题是我是否真的需要保持文件打开,或者我可以在完成后open mmap close进行一些大数据处理munmap。
我对这个的手册页mmap似乎不是很清楚。
不,至少不是在 Linux 上关闭文件就可以了。
手册页明确指出:
另一方面,关闭文件描述符不会取消映射该区域。
为了便携性,我还检查了POSIX 手册,它说的是同样的事情(尽管更清楚):
mmap()函数添加了对与文件描述符fildes关联的文件的额外引用,该文件描述符的后续close()不会删除该文件。当文件没有更多映射时,将删除此引用。