博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)使用inotify、inotify_add_watch、inotify_rm_watch、read编写监控程序
阅读量:6705 次
发布时间:2019-06-25

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

转自:http://blog.csdn.net/myarrow/article/details/7096460

inotify是什么

inotify是文件系统变化通知机制,在监听到文件系统变化后,会向相应的应用程序发送事件

典型的应用场景是文件管理器,理想情况下是用户修改了文件内容后立刻显示出文件最新的内容,而刷新后才显示,如果没有inotify机制,一般会采用轮询的方式实现这种功能,这不能再第一时间反应文件系统的变化,而且浪费CPU时间

inotify用户接口

inotify通过三个系统调用和在返回的文件描述符上的文件I/O操作来使用

#include 
int inotify_init()//初始化inotify,每个inotify实例对应一个排队的序列int inotify_add_watch(int fd,const char *path,uint32_t mask)//通过文件名和事件掩码添加一个watch对象,返回值是watch对象的描述符//fd:inotify_init的返回值//path:要监控的文件路径//mask:监听文件的哪些事件/* IN_ATTRIB,文件属性被修改 IN_CLOSE_WRITE,可写文件被关闭 IN_CLOSE_NOWRITE,不可写文件被关闭 IN_CREATE,文件/文件夹被创建 IN_DELETE,文件/文件夹被删除 IN_DELETE_SELF,被监控的对象本身被删除 IN_MODIFY,文件被修改 IN_MOVE_SELF,被监控的对象本身被移动 IN_MOVED_FROM,文件被移出被监控目录 IN_MOVED_TO,文件被移入被监控目录 IN_OPEN,文件被打开*///返回值:表示对那个文件的监视int inotify_rm_watch(int fd,uint32_t wd)//删除监视对象//fd:inotify_init的返回值//wd:inotify_add_watch的返回值//文件事件用struct inotify_event表示,通过fd由read函数来读取//buf是inotify_event结构的数组的指针,BUF_LEN 指定要读取的总长度,buf的长度不能小于BUF_LEN //read读取到的事件数取决于BUF_LEN以及事件中文件名的长度,返回实际读取的长度size_t len = read (fd, buf, BUF_LEN);struct inotify_event { __s32 wd; /* watch descriptor */ __u32 mask; /* watch mask */ __u32 cookie; /* cookie to synchronize two events */ __u32 len; /* length (including nulls) of name */ char name[0]; /* stub for possible name */}; //文件名是变长的,实际紧跟在该结构的后面,文件名被0填充以保证下一个事件结构能够4字节对齐。 //len字段也把name的填充字段统计在内

 

转载于:https://www.cnblogs.com/buptlyn/p/4448526.html

你可能感兴趣的文章
独家揭秘:微博深度学习平台如何支撑4亿用户愉快吃瓜?
查看>>
Visual Studio 15.7预览版4改进Git、C++支持
查看>>
全新云服务:亚马逊AWS发布AWS Ground Station\n
查看>>
微软宣布支持基于虚拟机的Azure IOT Edge服务
查看>>
来自社区的Visual Studio Code使用体验和教程
查看>>
高效运维最佳实践:如何做好On-call和事故响应?
查看>>
利用Scikit-Learn和Spark预测Airbnb的listing价格
查看>>
数据建模NoSQL数据库的概念和对象建模符号
查看>>
微软宣布Azure Function支持Python
查看>>
3·15曝光丨智能机器人一年拨打40亿个骚扰电话,6亿人信息已遭泄露!
查看>>
ArchSummit深圳2016大会7折售票最后一周
查看>>
2019年React学习路线图
查看>>
Google Docs API正式可用,可自动化文档任务和内容管理
查看>>
全面了解大数据“三驾马车”的开源实现
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
人工智能白热化,运维脱帽“背锅侠”
查看>>
Android中使PopupWindow显示在指定控件的上下左右!
查看>>
html中ul标签的优化
查看>>
Kurento安装与入门05——One to many video call
查看>>
[deviceone开发]-cnodejs论坛移动端App
查看>>