Difference between revisions of "Watching a directory with inotify"
Jump to navigation
Jump to search
(Created page with "Here's a thing one can compile to use inotify(7) to watch for files being created and deleted in a directory: #include <stdio.h> #include <stdlib.h> #include <sys/inotify....") |
|||
Line 25: | Line 25: | ||
} | } | ||
− | ret = inotify_add_watch(fd, | + | ret = inotify_add_watch(fd, argv[1], IN_CREATE | IN_DELETE); |
if (ret == -1) { | if (ret == -1) { | ||
perror("inotify_add_watch"); | perror("inotify_add_watch"); |
Revision as of 07:34, 13 November 2012
Here's a thing one can compile to use inotify(7) to watch for files being created and deleted in a directory:
#include <stdio.h> #include <stdlib.h> #include <sys/inotify.h> #include <unistd.h> #define EVENT_SIZE (sizeof (struct inotify_event)) #define EVENT_BUF_LEN (1024 * (EVENT_SIZE + 16)) int main(int argc, char **argv) { int fd, ret, i; char buffer[EVENT_BUF_LEN]; struct inotify_event *event; if (argc < 2) { printf("Usage: %s <dir>\n", argv[0]); return 1; } fd = inotify_init(); if (fd == -1) { perror("inotify_init"); return 1; } ret = inotify_add_watch(fd, argv[1], IN_CREATE | IN_DELETE); if (ret == -1) { perror("inotify_add_watch"); return 1; } while (1) { ret = read(fd, buffer, EVENT_BUF_LEN); if (ret == -1) { perror("read"); return 1; } i = 0; while (i < ret) { event = (struct inotify_event *)&buffer[i]; if (event->mask & IN_CREATE) printf("%s created\n", event->name); if (event->mask & IN_DELETE) printf("%s deleted\n", event->name); i += EVENT_SIZE + event->len; } } return 0; }