SHOW:
|
|
- or go back to the newest paste.
| 1 | #include <stdio.h> | |
| 2 | #include <stdlib.h> | |
| 3 | #include <errno.h> | |
| 4 | #include <sys/types.h> | |
| 5 | #include <sys/inotify.h> | |
| 6 | #include <unistd.h> | |
| 7 | ||
| 8 | #define EVENT_SIZE ( sizeof (struct inotify_event) ) | |
| 9 | #define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) ) | |
| 10 | ||
| 11 | const char * file_path = "/path/to/file"; | |
| 12 | ||
| 13 | int main( int argc, char **argv ) | |
| 14 | {
| |
| 15 | - | int length, i = 0; |
| 15 | + | int length, i; |
| 16 | int fd; | |
| 17 | int wd; | |
| 18 | char buffer[BUF_LEN]; | |
| 19 | ||
| 20 | fd = inotify_init(); | |
| 21 | ||
| 22 | if ( fd < 0 ) {
| |
| 23 | perror( "inotify_init" ); | |
| 24 | } | |
| 25 | ||
| 26 | wd = inotify_add_watch(fd, | |
| 27 | file_path, | |
| 28 | IN_ALL_EVENTS); | |
| 29 | ||
| 30 | while(1) | |
| 31 | {
| |
| 32 | length = read( fd, buffer, BUF_LEN ); | |
| 33 | ||
| 34 | if ( length < 0 ) {
| |
| 35 | perror( "read" ); | |
| 36 | } | |
| 37 | i = 0; | |
| 38 | while ( i < length ) {
| |
| 39 | struct inotify_event *event = ( struct inotify_event * ) &buffer[ i ]; | |
| 40 | printf("inotify event\n");
| |
| 41 | ||
| 42 | if ( event->len ) {
| |
| 43 | if ( event->mask & IN_CREATE ) {
| |
| 44 | if ( event->mask & IN_ISDIR ) {
| |
| 45 | printf( "The directory %s was created.\n", event->name ); | |
| 46 | } | |
| 47 | else {
| |
| 48 | printf( "The file %s was created.\n", event->name ); | |
| 49 | } | |
| 50 | } | |
| 51 | else if ( event->mask & IN_DELETE ) {
| |
| 52 | if ( event->mask & IN_ISDIR ) {
| |
| 53 | printf( "The directory %s was deleted.\n", event->name ); | |
| 54 | } | |
| 55 | else {
| |
| 56 | printf( "The file %s was deleted.\n", event->name ); | |
| 57 | } | |
| 58 | } | |
| 59 | else if ( event->mask & IN_MODIFY ) {
| |
| 60 | if ( event->mask & IN_ISDIR ) {
| |
| 61 | printf( "The directory %s was modified.\n", event->name ); | |
| 62 | } | |
| 63 | else {
| |
| 64 | printf( "The file %s was modified.\n", event->name ); | |
| 65 | } | |
| 66 | } | |
| 67 | } | |
| 68 | i += EVENT_SIZE + event->len; | |
| 69 | } | |
| 70 | } | |
| 71 | ||
| 72 | ( void ) inotify_rm_watch( fd, wd ); | |
| 73 | ( void ) close( fd ); | |
| 74 | ||
| 75 | exit( 0 ); | |
| 76 | } |