博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用inotify进行文件事件通知
阅读量:2352 次
发布时间:2019-05-10

本文共 2254 字,大约阅读时间需要 7 分钟。

#include 
#include
#include
#define MAX_EVENTS 256#define BUFFER_SIZE (MAX_EVENTS * sizeof(struct inotify_event))int register_watchpoint(int fd, char *dir);int watch(int fd);void emit_event(struct inotify_event *ievent);int main(int argc, char *argv[]){ int ifd, err; if(argc < 2) return -1; ifd = inotify_init(); if(ifd < 0) { printf("can't init inotify (%d)\n", errno); return -1; } err = register_watchpoint(ifd, argv[1]); if(err < 0) { printf("can't add watch (%d)\n", errno); return -1; } watch(ifd); close(ifd); return 0;}nt register_watchpoint(int fd, char *dir){ int err; err = inotify_add_watch(fd, dir, IN_ALL_EVENTS); return err;}int watch(int fd){ char ev_buffer[BUFFER_SIZE]; struct inotify_event *ievent; int len, i; void emit_event(struct inotify_event *ievent); while(1) { len = read(fd, ev_buffer, BUFFER_SIZE); if(len < 0) { if(errno == EINTR) continue; } i = 0; while(i < len) { ievent = (struct inotify_event *)&ev_buffer[i]; emit_event(ievent); i += sizeof(struct inotify_event) + ievent->len; } } return 0;}void emit_event(struct inotify_event *ievent){ if(ievent->len) printf("[%s] ", ievent->name); if(ievent->mask & IN_ACCESS) printf("Accessed\n"); if(ievent->mask & IN_MODIFY) printf("Modified\n"); if(ievent->mask & IN_ATTRIB) printf("Attributes Changed\n"); if(ievent->mask & IN_CLOSE_WRITE) printf("Closed (writeable)\n"); if(ievent->mask & IN_CLOSE_NOWRITE) printf("Closed (unwriteable)\n"); if(ievent->mask & IN_OPEN) printf("Opened\n"); if(ievent->mask & IN_MOVED_FROM) printf("File moved from\n"); if(ievent->mask & IN_MOVED_TO) printf("File moved to\n"); if(ievent->mask & IN_CREATE) printf("Subfile created\n"); if(ievent->mask & IN_DELETE) printf("Subfile deleted\n"); if(ievent->mask & IN_DELETE_SELF) printf("Self deleted\n"); if(ievent->mask & IN_MOVE_SELF) printf("Self moved\n"); return;}

转载地址:http://cshvb.baihongyu.com/

你可能感兴趣的文章
代码优化建议,44条代码优化细节
查看>>
快速排序(图解分析+代码调优)
查看>>
Java基础面试总结
查看>>
HashMap遍历几种方式比较(传统的Map迭代方式对比JDK8的迭代方式)
查看>>
Java面试& HashMap实现原理分析
查看>>
PS修改动图字幕
查看>>
八大基础排序总结
查看>>
Linux下安装使用FastDFS
查看>>
后台管理系统之品牌管理
查看>>
后台管理系统之商品规格管理
查看>>
后台管理系统之商品管理
查看>>
商品详情及Thymeleaf静态化
查看>>
如何安装最纯净的Windows系统,玩转重装操作系统
查看>>
RabbitMQ安装使用及数据同步
查看>>
用户中心
查看>>
授权中心
查看>>
乐优商城—购物车
查看>>
乐优商城—订单微服务
查看>>
《剑指offer》思路与实现总结--Java
查看>>
字符串数组转成矩阵
查看>>