使用inotify监视Linux文件变化
2014-03-10 10:01
495 查看
#include <stdlib.h> #include <stdio.h> #include <inotifytools/inotifytools.h> #include <inotifytools/inotify.h> enum { ACTION_NULL_WD, ACTION_ADD_WD, ACTION_DEL_WD, }; int main(int argc, const char **argv) { int err = 0; if (!inotifytools_initialize()) { printf("inotifytools_initialize failed\n"); return -1; } inotifytools_initialize_stats(); const char *monitor_path = "."; if (argc > 1) { monitor_path = argv[1]; } printf("Monitor dir(%s)\n", monitor_path); if (!inotifytools_watch_recursively(monitor_path, IN_ALL_EVENTS)) { printf("inotifytools_watch_recursively failed\n"); return -1; } inotifytools_set_printf_timefmt("%F %T"); struct inotify_event * event = inotifytools_next_event(-1); char path[256]; while (event) { inotifytools_printf( event, "%T %w%f %e\n" ); if (IN_ISDIR&event->mask) { int action = ACTION_NULL_WD; if ((IN_DELETE|IN_DELETE_SELF|IN_MOVED_FROM)&event->mask) { action = ACTION_DEL_WD; snprintf(path, sizeof(path), "%s%s", inotifytools_filename_from_wd(event->wd), event->name); printf("Remove path(%s) from wd\n", path); } else if (((IN_CREATE|IN_MOVED_TO)&event->mask) && (IN_ISDIR&event->mask)) { action = ACTION_ADD_WD; snprintf(path, sizeof(path), "%s%s", inotifytools_filename_from_wd(event->wd), event->name); printf("Add path(%s) into wd\n", path); } if (ACTION_ADD_WD == action) { if (!inotifytools_watch_recursively(path, IN_ALL_EVENTS)) { printf("inotifytools_watch_recursively failed\n"); return -1; } } else if (ACTION_DEL_WD == action) { if (!inotifytools_remove_watch_by_wd(event->wd)) { printf("inotifytools_remove_watch_by_wd failed. event->wd(%d)\n", event->wd); return -1; } } } event = inotifytools_next_event(-1); } printf("Exit\n"); return 0; }
相关文章推荐
- linux下使用inotify监控文件变化
- 使用inotify检测linux目录内文件变化
- inotify -- Linux 2.6 内核中的文件系统变化通知机制
- linux --- inotify 文件系统变化通知机制
- 通过inotify监控linux文件系统变化
- 使用FileSystemWatcher监视文件变化
- 使用 inotify 监控 Linux 文件系统事件
- inotify -- Linux 2.6 内核中的文件系统变化通知机制
- 如何监控Linux文件系统事件:inotify使用指南(1)
- linux下使用inotify实时监控文件变更,做完整性检查
- Linux下监测目录或文件的变化---inotify
- linux下使用inotify实时监控文件变更,做完整性检查
- inotify -- Linux 2.6 内核中的文件系统变化通知机制
- inotify -- Linux 2.6 内核中的文件系统变化通知机制
- 使用FileSystemWatcher监视文件变化
- Linux下使用inotify监控文件动作
- Linux之使用inotify监控文件
- 使用Inotify 监控Linux 文件系统事件
- inotify -- Linux 2.6 内核中的文件系统变化通知机制
- inotify -- Linux 2.6 内核中的文件系统变化通知机制