【问题标题】:FSEvents file flags are set regardless of event stream creation options无论事件流创建选项如何,都会设置 FSEvents 文件标志
【发布时间】: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 在这里。它的行为肯定不符合文档建议的方式。
  • 就我而言,我正在测试kFSEventStreamEventFlagItemCreatedkFSEventStreamEventFlagItemIsFile。当我在监视目录中创建新文件时,会调用回调但未设置这些标志!

标签: macos cocoa filesystems osx-lion fsevents


【解决方案1】:

事实上,虽然标志看起来不对,但这些标志是正常设置的。

例如,您有一个标志 133120。即 0x20800。 所以,你应该注意到“kFSEventStreamEventFlagItemRenamed = 0x00000800” 和“kFSEventStreamEventFlagItemIsDir = 0x00020000”。

也就是说,kFSEventStreamEventFlagItemRenamed & kFSEventStreamEventFlagItemIsDir 就是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    相关资源
    最近更新 更多