从inotify联机帮助页:
IN_CREATE File/directory created in watched directory (*).
可以通过捕获此事件来完成。
再次从手册页:
Limitations and caveats Inotify monitoring of directories is not recursive: to monitor subdirectories under a directory, additional watches must be created. This can take a significant amount time for large directory trees.
因此,您将需要自己执行递归部分。您可以从这里开始看一个例子。您还应该看看项目的通知工具
注释中要求的示例 :它监视
/tmp/inotify1&
/tmp/inotify2查找创建的新文件并显示事件
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <unistd.h>#include <sys/types.h>#include <sys/inotify.h>#define EVENT_SIZE ( sizeof (struct inotify_event) )#define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) )int main( int argc, char **argv ) { int length, i = 0; int fd; int wd[2]; char buffer[BUF_LEN]; fd = inotify_init(); if ( fd < 0 ) { perror( "inotify_init" ); } wd[0] = inotify_add_watch( fd, "/tmp/inotify1", IN_CREATE); wd[1] = inotify_add_watch (fd, "/tmp/inotify2", IN_CREATE); while (1){ struct inotify_event *event; length = read( fd, buffer, BUF_LEN ); if ( length < 0 ) { perror( "read" ); } event = ( struct inotify_event * ) &buffer[ i ]; if ( event->len ) { if (event->wd == wd[0]) printf("%sn", "In /tmp/inotify1: "); else printf("%sn", "In /tmp/inotify2: "); if ( event->mask & IN_CREATE ) { if ( event->mask & IN_ISDIR ) { printf( "The directory %s was created.n", event->name ); } else { printf( "The file %s was created.n", event->name ); } } } } ( void ) inotify_rm_watch( fd, wd[0] ); ( void ) inotify_rm_watch( fd, wd[1]); ( void ) close( fd ); exit( 0 );}测试运行:
shadyabhi@archlinux ~ $ ./a.out In /tmp/inotify1: The file abhijeet was created.In /tmp/inotify2: The file rastogi was created.^Cshadyabhi@archlinux ~ $



