1
我正在玩golang的syscall庫中的inotify功能。我可以使用InotifyInit
設置inotify功能,添加一個文件以便與InotifyAddWatch
一起觀看,並使用Read
函數檢測文件更改。我遇到的問題是Read
函數只讀入包含inotify事件信息的字節數組。我想轉換/施放該字節數組到InotifyEvent
結構,使我可以訪問有關inotify事件信息正確將字節數組轉換爲Golang中的syscall.InotifyEvent結構
下面是我到目前爲止有:
package main
import (
"fmt"
"syscall"
)
func main() {
buff := make([]byte, 64)
inotefd, err := syscall.InotifyInit()
if err != nil {
fmt.Println(err)
}
_, err = syscall.InotifyAddWatch(inotefd, "/home/me/foo", syscall.IN_MODIFY)
if err != nil {
fmt.Println(err)
}
for {
n, err := syscall.Read(inotefd, buff)
if err != nil {
fmt.Println(err)
return
}
if n < 0 {
fmt.Println("Read Error")
return
}
fmt.Printf("Buffer: %v\n", buff)
//can't cast []buff into InotifyEvent struct
fmt.Printf("Cookie: %v\n", buff[0:4])
fmt.Printf("Len: %v\n", buff[4:8])
fmt.Printf("Mask: %v\n", buff[8:12])
fmt.Printf("Name: %v\n", buff[12:13])
fmt.Printf("Wd: %v\n", buff[13:17])
}
}
感謝您的幫助!