简 介
在 linux 内核中,Inotify
是一种用于通知用户空间程序文件系统变化的机制。它监控文件系统的变化,如文件新建、修改、删除等,并可以将相应的事件通知给应用程序。Inotify
既可以监控文件,也可以监控目录。当监控目录时,它可以同时监控目录及目录中的各子目录及文件。Golang 的标准库 syscall
实现了该机制。为了进一步扩展和抽象, github.com/fsnotify/fsnotify
包实现了一个基于 channel 的、跨平台的实时监听接口。
如何使用:
fsnotify
的使用非常简单:
NewWatcher
初始化一个 watcher使用 watcher 的
Add
方法添加需要监听的文件或目录到监听队列中创建新的 goroutine,等待管道中的事件或错误
package main
import (
"fmt"
"log"
"github.com/fsnotify/fsnotify"
)
func main() {
// 1、NewWatcher 初始化一个 watcher
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
//3、创建新的 goroutine,等待管道中的事件或错误
done :=