From 4042c02ada706af608272d986368c924382aba9d Mon Sep 17 00:00:00 2001 From: Alessandro Mauri Date: Wed, 13 May 2020 00:17:29 +0200 Subject: [PATCH] inotify test --- tests/inotify | Bin 0 -> 18944 bytes tests/inotify.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/makefile | 4 ++- 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100755 tests/inotify create mode 100644 tests/inotify.c diff --git a/tests/inotify b/tests/inotify new file mode 100755 index 0000000000000000000000000000000000000000..2c1bcab18bb6a84fa3068954e4e6ffb3e0aec88d GIT binary patch literal 18944 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 NL8WoRXW$dXe*x4jdRzbi literal 0 HcmV?d00001 diff --git a/tests/inotify.c b/tests/inotify.c new file mode 100644 index 0000000..2f227e1 --- /dev/null +++ b/tests/inotify.c @@ -0,0 +1,66 @@ +/*This is the sample program to notify us for the file creation and file deletion takes place in “/tmp” directory*/ +#include +#include +#include +#include +#include +#include + +#define EVENT_SIZE ( sizeof (struct inotify_event) ) +#define EVENT_BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) ) + +int main( ) +{ + int length, i = 0; + int fd; + int wd; + char buffer[EVENT_BUF_LEN]; + + /*creating the INOTIFY instance*/ + fd = inotify_init1(IN_NONBLOCK); + + /*checking for error*/ + if ( fd < 0 ) { + perror( "inotify_init" ); + } + + /*adding the “/tmp” directory into watch list. Here, the suggestion is to validate the existence of the directory before adding into monitoring list.*/ + wd = inotify_add_watch( fd, "/dev/input/", IN_CREATE | IN_DELETE ); + + printf("%d\t%d\n", fd, wd); + /*read to determine the event change happens on “/tmp” directory. Actually this read blocks until the change event occurs*/ + while ((length = read( fd, buffer, EVENT_BUF_LEN )) < 0); + + /*checking for error*/ + if ( length < 0 ) { + perror( "read" ); + } + + /*actually read return the list of change events happens. Here, read the change event one by one and process it accordingly.*/ + while ( i < length ) { struct inotify_event *event = ( struct inotify_event * ) &buffer[ i ]; if ( event->len ) { + if ( event->mask & IN_CREATE ) { + if ( event->mask & IN_ISDIR ) { + printf( "New directory %s created.\n", event->name ); + } + else { + printf( "New file %s created.\n", event->name ); + } + } + else if ( event->mask & IN_DELETE ) { + if ( event->mask & IN_ISDIR ) { + printf( "Directory %s deleted.\n", event->name ); + } + else { + printf( "File %s deleted.\n", event->name ); + } + } + } + i += EVENT_SIZE + event->len; + } + /*removing the “/tmp” directory from the watch list.*/ + inotify_rm_watch( fd, wd ); + + /*closing the INOTIFY instance*/ + close( fd ); + +} diff --git a/tests/makefile b/tests/makefile index cdaecf1..70a608f 100644 --- a/tests/makefile +++ b/tests/makefile @@ -7,5 +7,7 @@ ioctl: ioctl.c evtest: evtest.c +inotify: inotify.c + clean: - rm *.o parse ioctl 2> /dev/null + rm *.o parse ioctl inotify 2> /dev/null