当前位置: 技术问答>linux和unix
Linux下mmap函数的问题
来源: 互联网 发布时间:2016-02-02
本文导语: 用mmap映射读取文件的问题我已经解决了. 现在的问题是, 如何用mmap映射一个文件, 然后修改该文件, 可能会添加内容, 也可能会删减内容, 最后将修改保存到文件中去. 50分 | mmap没法增加文件...
用mmap映射读取文件的问题我已经解决了.
现在的问题是, 如何用mmap映射一个文件, 然后修改该文件, 可能会添加内容, 也可能会删减内容, 最后将修改保存到文件中去.
50分
现在的问题是, 如何用mmap映射一个文件, 然后修改该文件, 可能会添加内容, 也可能会删减内容, 最后将修改保存到文件中去.
50分
|
mmap没法增加文件长度.
|
不能,mmap只是把文件在内存空间内做一个映象,在做这个映象时,文件大小是固定的,所以做成的内存映象
大小也是固定的.
要想改变文件到小,只能先解除映象,再改变文件大小,再建立映象.
是有点麻烦.我在看mmap的源代码时书上写的.还没看完.具体为什么也还没弄懂.
===============================================
不用看源代码,mmap是把文件的一部分复制到内存中,通过修改内存来修改文件。内存与文件是对应的,你mmap分配了内存之后,只能改变内容,不能再改变内存的大小.
大小也是固定的.
要想改变文件到小,只能先解除映象,再改变文件大小,再建立映象.
是有点麻烦.我在看mmap的源代码时书上写的.还没看完.具体为什么也还没弄懂.
===============================================
不用看源代码,mmap是把文件的一部分复制到内存中,通过修改内存来修改文件。内存与文件是对应的,你mmap分配了内存之后,只能改变内容,不能再改变内存的大小.
|
这样谢谢看
if( (fp = open("./data.bin",O_RDONLY) )
if( (fp = open("./data.bin",O_RDONLY) )