我在 FSEvents 上看到了奇怪的行为,我在恢复模式下挂载了我的驱动器,并且在重新启动时,我的流中的 fsevents 为零。我执行以下操作:
- 定期开机
- 使用 FSEventsGetCurrentEventId() 记录当前事件
- 以恢复模式启动并修改监视路径中的文件
- 重启系统
发生这种情况时,我在使用 fsevents API 时根本没有收到任何事件。它在 kFSEventStreamEventFlagHistoryDone 哨兵中发送的唯一标志,即使我在常规操作系统上进行了其他更改。
此ars technica 评论似乎暗示当您安装在其他设备上时,您应该获得 kFSEventStreamEventFlagMustScanSubDirs 标志,但我没有看到这种行为。有没有人遇到过这个?有没有更好的方法来检测和处理在操作系统关闭时驱动器已安装在其他地方的情况?
更新:我尝试了从 linux 启动并修改文件系统的相同操作。无论如何,我没有得到同样奇怪的 0 事件行为,但我也没有从我更改的目录或 MustScanSubdirs 标志中得到事件。
更新 2:在这个线程中,接受的响应说当发生这种情况时,时间机器会检测到在上述情况下日志已过期。有谁知道如何检测日志是否过期?这个日期可以用来代替标志。