这个mmap系统调用有什么问题?

1 go

这是对mmap文件的尝试并写入一个字节:

package main

import (
  "fmt"
    "os"
    "syscall"
)

func main() {
    file, _ := os.Open("/tmp/data")
    mmap, _ := syscall.Mmap(int(file.Fd()), 0, 100, syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_SHARED)
    fmt.Printf("cap is %d", cap(mmap))
    mmap[0] = 0
    syscall.Munmap(mmap)
}
Run Code Online (Sandbox Code Playgroud)

尽管长度设置为100,但mmap容量始终为0.系统调用出了什么问题?

小智 10

始终检查错误!

os.Open打开一个文件只读,但是mmap调用要求映射文件读/写,从而给出一个权限被拒绝错误,结果映射区域大小为0.