使用inotify检查被监视文件夹中的文件是否被覆盖

时间:2016-05-20 03:15:49

标签: c linux file inotify

我编写了一个使用inotify来观看特定文件夹的C程序。我希望在此文件夹中创建新文件时收到通知,或者如果现有文件被覆盖(即文件夹已包含a.txt),并且我将a.txt的较新副本复制到此文件夹中,基本上覆盖它。)

我可以使用IN_CREATE掩码将新文件添加到此文件夹时生成通知,但我没有收到第二种情况的通知。我已经尝试IN_MODIFYIN_ATTRIB,但都没有工作。

是否可以通知第二种情况?

1 个答案:

答案 0 :(得分:1)

如果覆盖文件,则不会收到IN_MODIFY和IN_ATTRIB事件。因为,文件未被修改,文件属性也不会更改。覆盖等于创建新文件。所以,您可以尝试使用单独的两个事件。

IN_MODIFY: -

仅在修改文件时才会发生此事件。要通知此事件,您可以尝试更新或删除监视列表文件中的某些内容。

IN_ATTRIB: -

仅在更改文件属性时才会发生此事件。属性表示文件元数据。因此,如果要为文件获取此事件,可以更改监视列表文件中的文件权限。

确保您要查看此事件,您必须在事件列表中添加以下事件,初始化您的inotify。

  • IN_MODIFY
  • IN_ATTRIB