Според документация на 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