По словам Apple documentation, в обратный вызов FSEvents
,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*
по-прежнему устанавливаются, когда события передаются мне из API FSEvents
. Я подозреваю, что это ошибка, но я не совсем уверен. Я использую OS X Lion 10.7.2
Пример кода можно найти здесь. http://stuconnolly.com/downloads/scevents/
EDIT
Вопрос заключается в том:
Кто-нибудь еще испытал те же результаты?
Это поведение, на которое я могу положиться, чтобы проверить флаги событий файла?
Итак, в чем вопрос? –
oops, добавлен вопрос. спасибо за указание – Tony
Видя то же самое. OS 10.8.2. Это определенно не ведет себя так, как предлагает документация. –