package main import( "fmt" "time" "unsafe" //"strings" "github.com/hidez8891/shm" ) const SHM_NAME = "my_shm" const SHM_SIZE = 4 * 1000 * 1000 type MyData struct { ss string ii int } //https://stackoverflow.com/questions/16330490/in-go-how-can-i-convert-a-struct-to-a-byte-array func main() { /*w, err := shm.Create("aaa", 64) if err != nil { fmt.Printf("fail: create shared memroy %v", err) } data := []byte( strings.Repeat("a", 63) ) n, err := w.WriteAt(data, 0) if err != nil { fmt.Printf("fail: write shared memroy %v", err) } fmt.Println("wn==>%d", n)*/ r, err := shm.Open(SHM_NAME, SHM_SIZE) if err != nil { fmt.Printf("fail: open shared memroy %v", err) } const sz = int( unsafe.Sizeof( MyData{} ) ) buf := make([]byte, sz) n, err := r.ReadAt(buf, 0) if err != nil { fmt.Printf("fail: read shared memroy %v", err) } data := *(**MyData)(unsafe.Pointer(&buf)) fmt.Printf("n==> %d, ss==>%s, ii==>%d \n", n, data.ss, data.ii) r.Close() time.Sleep(time.Duration(30)*time.Second) //w.Close() }