调用mmap之后,是否需要打开文件?
我有一个程序,映射不less(100)的大文件每个10-100MB。 我需要他们全部映射在同一时间。
目前我open
电话,然后在节目开始时按mmap
,然后是munmap
,最后close
。
通常我必须在运行程序之前调整运行ulimit -n
的打开文件限制。
问题是我真的需要保持文件打开,或者我可以open
mmap
close
做一些大数据处理,然后munmap
当我完成。
这个mmap的man页面对我来说似乎不太清楚。
不,至less不是在Linux上closures文件是好的。
手册页面明确指出:
另一方面,closures文件描述符不会取消映射该区域。
为了便于携带,我也检查了POSIX手册 ,它说的是相同的东西(尽pipe更清楚):
mmap()函数为与文件描述符fildes关联的文件添加一个额外的引用,该文件不会被该文件描述符上的后续close()移除。 当没有更多映射到文件时,此引用将被删除。