kqueue 监视目录大小的变化
kqueue watch size change on directory
我正在尝试使用 kqueue 观察目录的大小变化,这可能吗?这样做的原因是因为我正在监视目录,每当事件触发时,我都会统计目录并比较最后 mod 次等以确定内容-modifed、added、removed 或 renamed 事件是否发生.我的目标是当 contents-modified 发生在目录内的文件上时,甚至在目录上触发,我无法实现,所以我们有一个想法,我们想检测目录的大小变化,因为如果 contents-modified 发生在一个文件上,那么目录的大小将会改变。这可能吗?
谢谢
您没有 want/need 到 stat()
目录。每次 kqueue
说目录被修改时,您需要读取目录中的文件列表,并将其与上次读取时的列表进行比较。只有这样您才能知道是否出现了新文件,或者文件是否已被删除,或者文件是否已重命名(您还需要跟踪列表中每个文件的 inode 编号以检测重命名)。
如果您想进一步监视每个文件的更改,那么您还需要为目录中的每个文件添加事件,并在每次发出目录文件的事件信号时更新此事件列表。
仅供参考:此命令行实用程序可以满足您的需求,并且可以构建为使用 kqueue
:https://github.com/emcrisostomo/fswatch
我正在尝试使用 kqueue 观察目录的大小变化,这可能吗?这样做的原因是因为我正在监视目录,每当事件触发时,我都会统计目录并比较最后 mod 次等以确定内容-modifed、added、removed 或 renamed 事件是否发生.我的目标是当 contents-modified 发生在目录内的文件上时,甚至在目录上触发,我无法实现,所以我们有一个想法,我们想检测目录的大小变化,因为如果 contents-modified 发生在一个文件上,那么目录的大小将会改变。这可能吗?
谢谢
您没有 want/need 到 stat()
目录。每次 kqueue
说目录被修改时,您需要读取目录中的文件列表,并将其与上次读取时的列表进行比较。只有这样您才能知道是否出现了新文件,或者文件是否已被删除,或者文件是否已重命名(您还需要跟踪列表中每个文件的 inode 编号以检测重命名)。
如果您想进一步监视每个文件的更改,那么您还需要为目录中的每个文件添加事件,并在每次发出目录文件的事件信号时更新此事件列表。
仅供参考:此命令行实用程序可以满足您的需求,并且可以构建为使用 kqueue
:https://github.com/emcrisostomo/fswatch