# fsnotify/fsnotify

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/fsnotify-fsnotify).**

10,551 stars · 962 forks · Go · bsd-3-clause

## Links

- GitHub: https://github.com/fsnotify/fsnotify
- awesome-repositories: https://awesome-repositories.com/repository/fsnotify-fsnotify.md

## Description

fsnotify is a cross-platform filesystem notification library that provides a programming interface for tracking file and directory changes within Go applications. It utilizes native kernel notification interfaces to detect events such as file creation, deletion, and attribute updates, allowing developers to integrate real-time monitoring into their software.

The library distinguishes itself by providing a unified abstraction layer that normalizes disparate kernel APIs into a consistent event stream. It manages high-volume activity through non-blocking event polling and internal memory buffering, which prevents data loss during periods of intense disk operations. Additionally, the library supports recursive directory traversal, enabling the monitoring of entire folder hierarchies by programmatically registering watches for nested structures.

Beyond basic monitoring, the package facilitates the management of watcher lifecycles, allowing for the granular control of active paths to maintain system resource limits. It is designed to support the development of automated build systems, real-time file synchronization tools, and other utilities that require responsive system resource event handling.

## Tags

### Operating Systems & Systems Programming

- [File Change Detection](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/file-system-management/file-systems/file-change-detection.md) — Detects file and directory modifications including creation, deletion, and attribute updates using native kernel interfaces. ([source](https://pkg.go.dev/github.com/fsnotify/fsnotify))

### Programming Languages & Runtimes

- [Event Notification Packages](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/language-specific-resources/systems-and-performance-languages/go-resources/event-notification-packages.md) — Offers a Go programming interface for tracking filesystem events like creation, deletion, and attribute updates.

### Software Engineering & Architecture

- [Asynchronous Event Notification Libraries](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-event-dispatchers/asynchronous-event-notification-libraries.md) — Provides a cross-platform library for monitoring filesystem changes via native kernel notification interfaces.
- [Cross-Platform Abstraction Layers](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/abstraction-domain-modeling/cross-platform-abstraction-layers.md) — Normalizes disparate kernel notification APIs into a unified event stream for consistent cross-platform behavior.
- [Polling Mechanisms](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-architectures/polling-mechanisms.md) — Uses non-blocking background polling to process filesystem updates without stalling the main application execution.

### Data & Databases

- [Filesystem Change Monitors](https://awesome-repositories.com/f/data-databases/storage-abstraction/local-filesystem-storage/virtualized-filesystem-layers/filesystem-change-monitors.md) — Provides cross-platform filesystem monitoring by normalizing native kernel interfaces to trigger automated application logic.
- [Data Buffering](https://awesome-repositories.com/f/data-databases/data-buffering.md) — Provides internal memory buffering to store filesystem notifications and prevent data loss during high-volume activity.

### System Administration & Monitoring

- [File System Monitors](https://awesome-repositories.com/f/system-administration-monitoring/file-system-monitors.md) — Acts as a utility for managing active file watches and buffering event streams to maintain system performance.
- [File System Watchers](https://awesome-repositories.com/f/system-administration-monitoring/file-system-watchers.md) — Enables granular control over active file watches to manage system resource usage and lifecycle. ([source](https://pkg.go.dev/github.com/fsnotify/fsnotify))

### Development Tools & Productivity

- [Directory Change Trackers](https://awesome-repositories.com/f/development-tools-productivity/working-directory-configuration/directory-change-trackers.md) — Supports recursive directory traversal by programmatically registering watches for nested folder hierarchies.
- [Build Automation Systems](https://awesome-repositories.com/f/development-tools-productivity/build-automation-systems.md) — Integrates with build systems to trigger compilation or testing workflows automatically upon file save events.

### Networking & Communication

- [File Synchronization Services](https://awesome-repositories.com/f/networking-communication/real-time-collaboration-services/file-synchronization-services.md) — Facilitates real-time file synchronization by instantly detecting and reporting disk modifications.

### User Interface & Experience

- [System Event Handling](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/interaction-and-event-handling/event-handling-architectures/event-handling-systems/system-event-handling.md) — Handles high volumes of filesystem notifications efficiently to maintain application stability during intense disk activity.
