Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ssfang/fsnotify

Repository files navigation

File system notifications for Go

Build Status GoDoc

Cross platform, works on:

  • Windows
  • Linux
  • BSD
  • OSX

Moving Notice

We plan to include os/fsnotify in the Go standard library with a new API.

  • Import code.google.com/p/go.exp/fsnotify (GoDoc) for the latest API under development.
  • Continue importing github.com/howeyc/fsnotify (GoDoc) for the stable API.
  • Report Issues to go.exp/fsnotify after testing against code.google.com/p/go.exp/fsnotify
  • Join golang-dev to discuss fsnotify.
  • See the Contribution Guidelines for Go and sign the CLA.

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

FAQ

When a file is moved 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 (a recursive watcher is in the works #56).

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 (see #7)

Why am I receiving multiple events for the same file on OS X?

Spotlight indexing on OS X can result in multiple events (see #62). A temporary workaround is to add your folder(s) to the Spotlight Privacy settings until we have a native FSEvents implementation (see #54).

How many files can be watched at once?

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.

About

File system notification for Go

Resources

License

Contributing

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /