Categorygithub.com/howeyc/fsnotify
modulepackage
0.9.0
Repository: https://github.com/howeyc/fsnotify.git
Documentation: pkg.go.dev

# README

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.

# Functions

NewWatcher creates and returns a new inotify instance using inotify_init(2).

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author