文件系统事件在启动之间是持久的。它们由文件系统本身而不是应用程序跟踪。这就是为什么您每次启动时都会看到该事件。
我相信你必须打电话FSEventsPurgeEventsForDeviceUpToEventId
或类似的事情来清除事件。
带着一粒盐。我没有过多地摆弄它。
编辑:
来自文件系统事件编程指南:
要处理持久事件,您的应用程序应定期存储它处理的最后一个事件 ID。然后,当它需要返回查看哪些文件发生了变化时,它只需要查看在最后一个已知事件之后发生的事件。要获取自过去某个特定事件以来的所有事件,请将 sinceWhen 参数中的事件 ID 传递给 FSEventStreamCreate 或 FSEventStreamCreateRelativeToDevice。] [在每个设备的基础上,您还可以轻松地使用时间戳来确定要包含哪些事件。为此,您必须首先调用 FSEventsGetLastEventIdForDeviceBeforeTime 以获取 FSEventStreamCreateRelativeToDevice 参数 sinceWhen 的最后一个事件 ID。
我认为要记住的重要一点是文件系统事件实际上并未存储,甚至与正在观察它们的应用程序相关。它们独立于文件系统本身的应用程序而存在。在实践中,可以设置几个不同的应用程序来观察相同的事件。