Согласно документации Apple, в обратный вызов FSEvents
,
/* These flags are only set if you specified the FileEvents */
/* flags when creating the stream. */
kFSEventStreamEventFlagItemCreated = 0x00000100,
kFSEventStreamEventFlagItemRemoved = 0x00000200,
kFSEventStreamEventFlagItemInodeMetaMod = 0x00000400,
kFSEventStreamEventFlagItemRenamed = 0x00000800,
kFSEventStreamEventFlagItemModified = 0x00001000,
kFSEventStreamEventFlagItemFinderInfoMod = 0x00002000,
kFSEventStreamEventFlagItemChangeOwner = 0x00004000,
kFSEventStreamEventFlagItemXattrMod = 0x00008000,
kFSEventStreamEventFlagItemIsFile = 0x00010000,
kFSEventStreamEventFlagItemIsDir = 0x00020000,
kFSEventStreamEventFlagItemIsSymlink = 0x00040000
Однако я трижды проверил, что флаг kFSEventStreamCreateFlagFileEvents
не устанавливается при вызове
FSEventStreamRef FSEventStreamCreate(
CFAllocatorRef allocator,
FSEventStreamCallback callback,
FSEventStreamContext *context,
CFArrayRef pathsToWatch,
FSEventStreamEventId sinceWhen,
CFTimeInterval latency,
FSEventStreamCreateFlags flags);
Но независимо от того, что я делаю, флаги kFSEventStreamEventFlagItem*
все еще устанавливаются, когда события передаются мне из FSEvents
API. Я подозреваю, что это ошибка, но я не совсем уверен. Я использую OS X Lion 10.7.2.
Пример кода можно найти здесь. http://stuconnolly.com/downloads/scevents/
ИЗМЕНИТЬ
Вопрос в следующем:
У кого-нибудь еще были такие же результаты?
Могу ли я полагаться на это поведение при проверке флагов событий файла?
kFSEventStreamEventFlagItemCreated
, так иkFSEventStreamEventFlagItemIsFile
. Когда я создаю новый файл в отслеживаемом каталоге, вызывается обратный вызов, но эти флаги не устанавливаются!! - person Nicolas Miari   schedule 09.11.2013