你如何Mmap()在Go中大于2GB的文件?

时间:2012-07-24 00:23:01

标签: go mmap

syscall.Mmap()调用采用int类型的长度参数,仅适用于2GB。我如何mmap一个更大的文件呢?

注意:64位系统,所以地址空间不是问题。

1 个答案:

答案 0 :(得分:4)

在mmapper上的Mmap方法中查看http://golang.org/src/pkg/syscall/syscall_unix.go。您应该能够复制该代码并根据需要进行调整。

当然你将无法mmap到[]字节,因为切片长度被定义为“int”(目前在任何地方都是32位)。您可以将mmap映射到更大的元素类型(例如[] int32),或者仅使用指向内存的指针进行muck,但它不会成为syscall.Mmap的替代品。