我已经使用mmap()将文件映射到内存,并且我需要在文件结尾之外进行写入。我无法找到任何确凿的文件证据证明在这种情况下会发生什么。 This document说超出EOF的访问是未定义的。有没有正确的方法来做到这一点?mmap超出文件末尾
4
A
回答
3
取消映射文件,通过任何常规手段扩展它(fseek结束+ fwrite)并将其再次映射。这应该是相当快的;被分页在文件的任何部分会留在分页。
您还可以扩展文件当它被映射然后mremap它。这应该很好,因为你没有改变任何映射的页面。这可能会影响操作系统。
改变映射的基本文件的大小上 对应于该文件的添加或去除的区域的网页的效果是 未指定的。
2
我只想用truncate(2)或ftruncate(2)先设置我想要的长度(它使文件过大,尽管名称),然后mmap(2)
它。无论mmap(2)在写入超出原始EOF时的效果如何,这都将完全符合您的要求。
此(或文件扩展名的一些其它记录方法)所需的可移植程序无论如何,因为这两个the Posix和the Linux man page指出该文件不被写入超过端延长。
相关问题
- 1. python:读取超出文件末尾
- 2. Node.js指示超出文件末尾的意外令牌
- 3. C元素超出数组的末尾
- 4. 错误 - 索引超出列表末尾
- 5. DeflaterOutputStream:写入超出流末尾
- 6. 淡出文本的末尾
- 7. 文件末尾要求
- 8. HTML文件末尾的CSS
- 9. 文档末尾的事件
- 10. 在文件末尾写入
- 11. Java JTextArea允许滚动超出文本末尾
- 12. 从文件末尾解析XML文件
- 13. MQMessage.ReadString给出错误“无法读取超出mscorlip流的末尾”
- 14. PHP - 从文本文件末尾读取
- 15. 无法读取超过流末尾
- 16. 参数索引超出范围mysql在finally块的末尾
- 17. GZipStream超出我的数据部分末尾
- 18. 写作超出数组的末尾用C
- 19. “myrange”循环继续处理超出范围末尾的问题
- 20. 替换文件名(SRC)的末尾
- 21. 文件末尾的前哨值?
- 22. Net :: HTTP - 达到文件末尾
- 23. PHP源文件末尾用>
- 24. cPickle.dump始终在文件末尾倾销
- 25. 文件末尾无限while循环
- 26. 在css文件的末尾指定.aspx?
- 27. fputcsv在文件末尾附加'null'
- 28. Ruby - 从文件末尾连续读取
- 29. grep从文件末尾搜索
- 30. 文件末尾的Rails生成器`inject_into_file`