【发布时间】:2012-02-27 03:14:00
【问题描述】:
根据Apple documentation,在对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);
但无论我做什么,当事件从FSEvents API 传递给我时,kFSEventStreamEventFlagItem* 标志仍在设置中。我怀疑这是一个错误,但我不太确定。我正在使用 OS X Lion 10.7.2
可在此处找到示例代码。 http://stuconnolly.com/downloads/scevents/
编辑
问题是:
有没有其他人经历过同样的结果?
这是我可以用来检查文件事件标志的行为吗?
【问题讨论】:
-
哎呀,添加了问题。谢谢指出
-
看到同样的事情。操作系统 10.8.2 在这里。它的行为肯定不符合文档建议的方式。
-
就我而言,我正在测试
kFSEventStreamEventFlagItemCreated和kFSEventStreamEventFlagItemIsFile。当我在监视目录中创建新文件时,会调用回调但未设置这些标志!
标签: macos cocoa filesystems osx-lion fsevents