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