syscall.Mmap()调用采用int类型的长度参数,仅适用于2GB。我如何mmap一个更大的文件呢?
注意:64位系统,所以地址空间不是问题。
答案 0 :(得分:4)
在mmapper上的Mmap方法中查看http://golang.org/src/pkg/syscall/syscall_unix.go。您应该能够复制该代码并根据需要进行调整。
当然你将无法mmap到[]字节,因为切片长度被定义为“int”(目前在任何地方都是32位)。您可以将mmap映射到更大的元素类型(例如[] int32),或者仅使用指向内存的指针进行muck,但它不会成为syscall.Mmap的替代品。