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