int mINotifyFd; int result; if(argc != 2) { printf("Usage: %s \n", argv[0]); return -1; } mINotifyFd = inotify_init(); result = inotify_add_watch(mINotifyFd, argv[1], IN_DELETE | IN_CREATE); while (1) { read_process_inotify_fd(mINotifyFd); //读数据 } return 0; }...
1. inotify_init:用于创建一个 inotify 实例的系统调用,并返回一个指向该实例的文件描述符。Int fd=inotify_init(); 2. inotify_add_watch:增加对文件或者目录的监控,并指定需要监控哪些事件。 int wd =inotify_add_watch(fd,path,mask); 这里path表示你要监听的文件目录,mask表示监听事件掩码,就是监听读了写...
intinotifyFd=inotify_init(); 而watch对象则用来描述文件系统的变化事件的监听。它是一个二元组,包括监听目标和事件掩码两个元素。 intwd=inotify_add_watch(inotifyFd,“/dev/input”,IN_CREATE|IN_DELETE); 当没有监听事件发生时,可以通过如下方式将一个或多个未读取的事件信息读取出来: size_t len = read...
综合起来下面的代码表示的意思就是当“/dev/input”下发生IN_CREATE | IN_DELETE(创建或者删除)时即把这个事件写入到INotify对象中 */intwd =inotify_add_watch(inotifyFd,"/dev/input", IN_CREATE|IN_DELETE ) Epoll机制 在上述INotify机制中我们知道了我们只需关心inotifyFd这个描述符就行了,可是事件是随机发...
(1)初始化--初始化epoll和inotify,获取其fd (2)添加事件 对文件夹中文件的创建和删除进行检测--inotify_add_watch(mINotifyFd, dir, IN_DELETE | IN_CREATE); 将监听事件加入epoll池中,监听事件行为--add_to_epoll(mINotifyFd, mEpollFd); (3)等待事件发生 ...
INotify机制 INotify是Linux内核提供的一种文件系统变化通知机制。它可以为应用程序监控文件系统的变化,如文件的新建,删除等。 //创建INotify对象,并用描述符inotifyFd 描述它 int inotifyFd = inotify_init(); /* 添加监听 inotify_add_watch函数参数说明 ...
综合起来下面的代码表示的意思就是当“/dev/input”下发生IN_CREATE | IN_DELETE(创建或者删除)时即把这个事件写入到INotify对象中 */int wd=inotify_add_watch(inotifyFd,"/dev/input",IN_CREATE|IN_DELETE) Epoll机制在上述INotify机制中我们知道了我们只需关心inotifyFd这个描述符就行了,可是事件是随机发生的...
解决 提出Inotify epoll 这俩个linux的处理机制 Inotify用来监听设备节点变化 epoll用来监听文件描述符是否存在可读事件 直接看eventhub的构造函数 备注: 这里没有全截函数,只是关键部分 EventHub::EventHub(void) 这里看到了INotify的作用 通过Inotify_add_watch 监听设备路径节点变化 ...
int fd = inotify_init(); if (fd < 0) { LOGA("inotify_init err.\n"); return; } int wd = inotify_add_watch(fd,dirName,IN_ALL_EVENTS); if (wd < 0) { LOGA("inotify_add_watch err.\n"); close(fd); return; } const int buflen=sizeof(struct inotify_event) * 0x100; ...
int result = inotify_add_watch(mINotifyFd, DEVICE_PATH, IN_DELETE | IN_CREATE); result = epoll_ctl(mEpollFd, EPOLL_CTL_ADD, mINotifyFd, &eventItem); result = epoll_ctl(mEpollFd, EPOLL_CTL_ADD, mWakeReadPipeFd, &eventItem); ...