目录

时间:2015-05-02 22:16:29

标签: c macos bsd kqueue

我正在尝试使用kqueue观察目录的大小更改,这可能吗?之所以这样,是因为我正在观看目录,每当事件触发时,我会对目录进行统计并比较最后的mod时间等,以确定是否发生了内容修改,添加,删除或重命名的事件。我的目标是在目录内的文件上发生内容修改时触发目录,我无法实现,所以我们有了一个想法,我们想要检测目录上的大小更改,就像内容修改一样发生在一个文件内然后目录的大小将改变。这可能吗?

由于

1 个答案:

答案 0 :(得分:1)

您不希望/需要stat()目录。每次kqueue表示目录被修改时,您需要读取目录中的文件列表,并将其与上次读取时的列表进行比较。只有这样,您才能知道是否出现了新文件,或者文件是否已被删除,或者文件是否已重命名(您还需要跟踪列表中每个文件的inode编号以检测重命名)。

如果要进一步监视每个文件的更改,则还需要为目录中的每个文件添加事件,并在每次发出目录文件的事件信号时更新此事件列表。

仅供参考:此命令行实用程序可以执行您想要的操作,并且可以构建为使用kqueuehttps://github.com/emcrisostomo/fswatch