使用mmap增加文件大小

时间:2013-06-30 18:03:40

标签: python linux mmap memory-mapped-files

在Windows上的Python中,我可以通过

创建一个大文件
    from mmap import mmap
    f = open('big.file', 'w')
    f.close()
    f = open('big.file', 'r+')
    m = mmap(f.fileno(), 10**9)

现在big.file是(约)1千兆字节。但是,在Linux上,这将返回ValueError: mmap length is greater than file size

有没有办法在Linux上获得与Windows相同的行为?也就是说,能够使用mmap增加文件的大小?

1 个答案:

答案 0 :(得分:4)

至少在POSIX系统上,mmap()不能用于增加(或减少)文件的大小。 mmap()的功能是对内存映射文件的一部分。你请求映射的东西实际上应该存在是合乎逻辑的!坦率地说,我真的很惊讶你实际上可以在MS Windows下做到这一点。

如果您想要发展文件,请ftruncate()之前mmap()。{/ p>