tutorial_monitor_add(3)

NAME
tutorial_monitor_add - eio_monitor_add() tutorial To use eio_monitor_add(), you have to define callbacks for events declared by eio.

Available events are :

•   EIO_MONITOR_FILE_CREATED

•   EIO_MONITOR_FILE_DELETED

•   EIO_MONITOR_FILE_MODIFIED

•   EIO_MONITOR_FILE_CLOSED

•   EIO_MONITOR_DIRECTORY_CREATED

•   EIO_MONITOR_DIRECTORY_DELETED

•   EIO_MONITOR_DIRECTORY_CLOSED

•   EIO_MONITOR_SELF_RENAME

•   EIO_MONITOR_SELF_DELETED

As nothing is worth an example, here it is :

#include <Eina.h>
#include <Ecore.h>
#include <Eio.h>
void file_modified(void *data, int type, void *event)
{
   const char *filename = (const char *)data;
   printf("file %s ", filename);
   if( type == EIO_MONITOR_FILE_MODIFIED )
      printf("is being modified");
   else if( type == EIO_MONITOR_FILE_CLOSED )
      printf("is no longer being modified");
   else printf("got unexpected changes");
   printf(");
}
int main(int argc, char **argv) {
   Eio_Monitor *monitor  = NULL,
               *monitor2 = NULL;
   eio_init();
   const char *filename = eina_stringshare_add("/tmp/eio_notify_testfile");
   monitor  = eio_monitor_add(filename);
   ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED, (Ecore_Event_Handler_Cb)file_modified, filename);
   ecore_event_handler_add(EIO_MONITOR_FILE_CLOSED, (Ecore_Event_Handler_Cb)file_modified, filename);
   ecore_main_loop_begin();
   eio_shutdown();
   eina_stringshare_del(filename);
}

 Build the example doing :

gcc -o tutorial_monitor_add tutorial_monitor_add.c `pkg-config --libs --cflags eio ecore ecore-file eina`
* then create the file /tmp/eio_notify_testfile :
* touch /tmp/eio_notify_testfile
* and launch tutorial_monitor_add, and in another terminal, write into /tmp/eio_notify_testfile, doing for example :
* echo "test" >> /tmp/eio_notify_testfile
*