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