Флаги файла FSEvents устанавливаются независимо от параметров создания потока событий. - PullRequest
6 голосов
/ 05 февраля 2012

Согласно документации 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 

Однако я трижды проверил, что при вызове * 1008 не установлен флаг 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/

РЕДАКТИРОВАТЬ

Вопрос:
Кто-нибудь еще испытывал такие же результаты?
Могу ли я проверить это поведениедля файловых флагов событий?

1 Ответ

0 голосов
/ 11 апреля 2017

На самом деле эти флаги установлены нормально, хотя флаг выглядит неправильно.

Например, вы получили флаг 133120. Это 0x20800.Таким образом, вы должны заметить, что «kFSEventStreamEventFlagItemRenamed = 0x00000800» и «kFSEventStreamEventFlagItemIsDir = 0x00020000».

То есть kFSEventStreamEventFlagItemRenamed * kFSEventStreamI5 являются нужными.

...