欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 写go踩坑,使用第三方包fsnotify监听文件变动,Liunx下只能监听到第一次

写go踩坑,使用第三方包fsnotify监听文件变动,Liunx下只能监听到第一次

2024/11/30 11:49:51 来源:https://blog.csdn.net/weixin_44102466/article/details/139503668  浏览:    关键词:写go踩坑,使用第三方包fsnotify监听文件变动,Liunx下只能监听到第一次

写go踩坑,使用第三方包fsnotify监听文件变动,Liunx下只能监听到第一次

踩坑描述:今天接到一个监听文件变动后读取文件数据需求,在本地windows写的好好的,一点毛病都没,发到服务器ubuntu后就发现一个恶心问题,只有第一次修改才能监测到后面就监听不到,然后开启各种尝试定位百度一直没解决,后面发现原来是文件权限问题,日了。需要 chmod +777 filename 权限才能监听到

代码示例 监听1.txt文件变动

package mainimport ("fmt""github.com/fsnotify/fsnotify""log""sync""time"
)func main() {watcher, err := fsnotify.NewWatcher()if err != nil {log.Fatal(err)}defer watcher.Close()var mu sync.Mutexvar lastEventTime = make(map[string]time.Time)err = watcher.Add("1.txt")if err != nil {return}for {select {case event := <-watcher.Events:mu.Lock()lastTime, ok := lastEventTime[event.Name]currentTime := time.Now()if !ok || currentTime.Sub(lastTime) > 500*time.Millisecond { // 500ms 作为示例fmt.Printf("New event: %+v\n", event)if event.Op&fsnotify.Write == fsnotify.Write {fmt.Println("modified file:", event.Name)}lastEventTime[event.Name] = currentTime}mu.Unlock()case err = <-watcher.Errors:log.Println("error:", err)}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com