mmap():如果底层文件更改(缩小)会发生什么?

发布于 2024-11-27 09:04:25 字数 66 浏览 1 评论 0原文

如果您使用 mmap() 内存映射文件,但底层文件的大小会更改为小得多。如果访问从文件中删除的内存偏移量,会发生什么?

If you memory map a file using mmap(), but then the underlying file changes to a much smaller size. What happens if you access a memory offset that was shaved off from the file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

得不到的就毁灭 2024-12-04 09:04:25

IBM 表示它未定义 http: //publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=%2Fapis%2Fmmap.htm

如果映射文件的大小在 mmap() 之后减小,则尝试引用超出文件末尾的内容未定义,并可能导致 MCH0601 异常。

如果在 mmap() 函数完成后文件大小增加,则将无法通过映射访问超出原始文件末尾的整个页面。

SingleUnixSpecification 中也有同样的说法: http://pubs.opengroup.org/onlinepubs /7908799/xsh/mmap.html

如果在调用 mmap() 后由于对映射文件进行某些其他操作而导致映射文件的大小发生变化,则对映射区域中与 < 的添加或删除部分相对应的部分的引用会产生影响strong>文件未指定。

“未定义”或“未指定”意味着 - 允许操作系统开始格式化磁盘或任何内容。最有可能的是 SIGSEGV 杀死了您的应用程序。

IBM says it is undefined http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=%2Fapis%2Fmmap.htm

If the size of the mapped file is decreased after mmap(), attempts to reference beyond the end of the file are undefined and may result in an MCH0601 exception.

If the size of the file increases after the mmap() function completes, then the whole pages beyond the original end of file will not be accessible via the mapping.

The same is said in SingleUnixSpecification: http://pubs.opengroup.org/onlinepubs/7908799/xsh/mmap.html

If the size of the mapped file changes after the call to mmap() as a result of some other operation on the mapped file, the effect of references to portions of the mapped region that correspond to added or removed portions of the file is unspecified.

'undefined' or 'unspecified' means - the OS is allowed to start formatting of disk or anything. Most probable is SIGSEGV-killing your application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文