I recently stumbled upon inotify. A set of calls to monitor file system events on an individual file or a directories.
Used in combination with read(), you can read an event from an inotify file descriptor that is "watching" files or directories. On a successful event, read() returns a buffer containing an inotify_event.
checkout man inotify for more information. IBM's DeveloperWorks has a good writeup on it here.