name);     ....">

当前位置:  技术问答>linux和unix

关于inotify的一个问题

    来源: 互联网  发布时间:2016-07-28

    本文导语:  我用inotify来监视文件夹下的创建,读以及写操作,具体的代码我不写了,因为在虚拟机里写的,弄出来有点麻烦。我就简单写一些片段: if(len){     printf("%s   ",ie->name);     if(ie->mask & IN_ACCESS) printf("read occurs...

我用inotify来监视文件夹下的创建,读以及写操作,具体的代码我不写了,因为在虚拟机里写的,弄出来有点麻烦。我就简单写一些片段:

if(len){
    printf("%s   ",ie->name);
    if(ie->mask & IN_ACCESS) printf("read occursn");
    if(ie->mask & IN_MODIFY) printf("modify occursn");
    if(ie->mask & IN_CREATE) printf("create occursn");
}
然后问题出现了,如果我用以下的两种mask调用inotify_add_watch函数得到的结果不一样
一种是直接IN_ALL_EVENTS
一种是 IN_ACCESS | IN_MODIFY | IN_CREATE
如果我在终端执行这样的操作 echo "hello" > new
两种显示分别是
new create occurs
new new modify occurs
new
还有一个是正常的
new create occurs
new modify occurs
我奇怪的是为什么那种不大对的显示会那样?大家能解答一下吗,谢谢了

|
看头文件得知
#define IN_ALL_EVENTS  (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE  
  | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM       
  | IN_MOVED_TO | IN_CREATE | IN_DELETE       
  | IN_DELETE_SELF | IN_MOVE_SELF)
那么就是说 echo "hello" > new 
除了有IN_CREATE IN_MODIFY 这样的行为外还有其他行为
你可以把ie->mask打印出来,对照头文件,看看具体多了什么掩码

    
 
 

您可能感兴趣的文章:

  • inotify_add_watch问题
  • inotify的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • inotify求助
  • ARM linux 编译器不支持 inotify 监视文件功能?
  • inotify-tools
  • Linux文件系统监控的Java类库 inotify-java
  • Linux文件系统安全监控 inotify-sync
  • inotify机制是Linux专有的吗,还是Posix系统上全都有的实现?
  • ptrace和inotify到底有什么区别? 我怎么感觉两者是一样的功能呢?
  • inotify 检测文件被修改
  • 【一周话题】介绍Linux 2.6.13 内核中新引入的文件系统变化通知机制 inotify
  • 使用Inotify 监控目录与文件的方法详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3