1

これは、mmapファイルに 1 バイトを書き込む試みです。

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)
}

length が 100 に設定されているにもかかわらず、mmapcapacity は常に 0 です。システム コールで何が問題になったのですか?

4

2 に答える 2

10

常にエラーをチェックしてください!

os.Open読み取り専用でファイルを開きますが、mmap呼び出しはファイルの読み取り/書き込みをマップするように要求するため、許可拒否エラーが発生し、その結果、マップされた領域サイズは 0 になります。

于 2013-05-17T12:21:02.233 に答える