README
¶
File system notifications for Go
Cross platform, works on:
- Windows
- Linux
- BSD
- OSX
Example:
package main
import (
"log"
"github.com/howeyc/fsnotify"
)
func main() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
done := make(chan bool)
// Process events
go func() {
for {
select {
case ev := <-watcher.Event:
log.Println("event:", ev)
case err := <-watcher.Error:
log.Println("error:", err)
}
}
}()
err = watcher.Watch("testDir")
if err != nil {
log.Fatal(err)
}
<-done
/* ... do stuff ... */
watcher.Close()
}
For each event:
- Name
- IsCreate()
- IsDelete()
- IsModify()
- IsRename()
Notes:
- When a file is renamed to another directory is it still being watched?
- No (it shouldn't be, unless you are watching where it was moved to).
- When I watch a directory, are all subdirectories watched as well?
- No, you must add watches for any directory you want to watch.
- Do I have to watch the Error and Event channels in a separate goroutine?
- As of now, yes. Looking into making this single-thread friendly.
- There are OS-specific limits as to how many watches can be created:
- Linux: /proc/sys/fs/inotify/max_user_watches contains the limit, reaching this limit results in a "no space left on device" error.
- BSD / OSX: sysctl variables "kern.maxfiles" and "kern.maxfilesperproc", reaching these limits results in a "too many open files" error.
Documentation
¶
Overview ¶
Package fsnotify implements filesystem notification.
Index ¶
Examples ¶
Constants ¶
View Source
const ( FSN_CREATE = 1 FSN_MODIFY = 2 FSN_DELETE = 4 FSN_RENAME = 8 FSN_ALL = FSN_MODIFY | FSN_DELETE | FSN_RENAME | FSN_CREATE )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type FileEvent ¶
type FileEvent struct { Name string // File name (optional) // contains filtered or unexported fields }
func (*FileEvent) IsModify ¶
IsModify reports whether the FileEvent was triggerd by a file modification or attribute change
type Watcher ¶
type Watcher struct { Error chan error // Errors are sent on this channel Event chan *FileEvent // Events are returned on this channel // contains filtered or unexported fields }
func NewWatcher ¶
NewWatcher creates and returns a new inotify instance using inotify_init(2)
func (*Watcher) Close ¶
Close closes an inotify watcher instance It sends a message to the reader goroutine to quit and removes all watches associated with the inotify instance
func (*Watcher) RemoveWatch ¶
Remove a watch on a file
Click to show internal directories.
Click to hide internal directories.