gpt4 book ai didi

macos - 无论事件流创建选项如何,都会设置 FSEvents 文件标志

转载 作者:行者123 更新时间:2023-12-03 16:09:49 26 4
gpt4 key购买 nike

根据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/

编辑

问题是:
其他人也经历过同样的结果吗?
我可以依靠这种行为来检查文件事件标志吗?

最佳答案

事实上,这些标志是正常设置的,尽管标志看起来是错误的。

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

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

关于macos - 无论事件流创建选项如何,都会设置 FSEvents 文件标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9146673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com