Я наблюдаю странное поведение на FSEvents, когда я монтирую свой диск в режиме восстановления, а при перезагрузке получаю ноль fsevents в своем потоке. Я делаю следующее:
- Регулярно загружайтесь
- Запишите текущее событие с помощью FSEventsGetCurrentEventId()
- Загрузитесь в режиме восстановления и измените файл в отслеживаемом пути
- Перезагрузите систему
Когда это происходит, я вообще не получаю никаких событий, когда использую fsevents API. Единственный флаг, который он отправляет в дозорном kFSEventStreamEventFlagHistoryDone, даже если я сделал другие изменения в обычной ОС.
Этот обзор ars technica, кажется, подразумевает, что когда вы монтируете на какое-то другое устройство, вы должны получить флаг kFSEventStreamEventFlagMustScanSubDirs, но я не вижу такого поведения. Кто-нибудь сталкивался с этим раньше? Есть ли лучший способ обнаружить и устранить случай, когда диск был смонтирован где-то еще, когда ОС была выключена?
Обновление: я попробовал то же самое, загрузившись из Linux и изменив файловую систему. Я не получил такого же странного поведения 0 событий, несмотря ни на что, но я также не получил событие из каталога, который я изменил, или флаг MustScanSubdirs.
Обновление 2: в этой теме принятый ответ говорит, что когда это происходит , машина времени обнаруживает, что журналы устарели в описанных выше ситуациях. Кто-нибудь знает, как определить, устарели ли журналы? Эту дату можно было бы использовать вместо флага.