C - 目录上的 kqueue 监视大小更改



我正在尝试使用 kqueue 观察目录的大小变化,这可能吗?这样做的原因是因为我正在监视目录,每当触发事件时,我都会统计目录并比较上次修改时间等,以确定是否发生了内容修改、添加、删除或重命名的事件。我的目标是在目录内的文件上发生内容修改时在目录上触发一个偶数触发器,我无法做到这一点,所以我们有一个想法,我们想检测目录的大小变化,就像内容修改发生在一个文件内,那么目录的大小就会改变。这可能吗?

谢谢

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

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

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

最新更新