我在使用Cocoa项目监听目录和磁盘更改FSEvents.我需要在重命名或删除根文件夹时获取事件.所以,我kFSEventStreamCreateFlagWatchRoot在创建时通过了FSEventStream.但即使我删除或重命名根文件夹,我也没有得到相应的FSEventStreamEventFlags.知道可能是什么问题.我正在听USB安装设备的更改.我用过FSEventStreamCreate和FSEventStreamCreateRelativeToDevice.我注意到的一件事是当我尝试时,FSEventStreamCreate我在创建时收到以下错误消息FSEventStream:
(
CarbonCore.framework)FSEventStreamCreate:watch_all_parents:
错误尝试添加的kqueue为fd 7(/Volumes/NO NAME;不支持操作)
但是FSEventStreamCreateRelativeToDevice没有错误但仍然没有进入kFSEventStreamEventFlagRootChanged事件标志.此外,虽然使用FSEventStreamCreateRelativeToDeviceapple说创建,如果我想听根路径更改传递emty字符串"".但是我无法通过传递空字符串来监听根路径更改.但是,当我通过"/"它工作.但即使"/"我没有得到任何适当的FSEventStreamEventFlags.我在这里粘贴代码:
-(void) subscribeFileSystemChanges:(NSString*) path
{
PRINT_FUNCTION_BEGIN;
// if already subscribed then unsubscribe
if (stream)
{
FSEventStreamStop(stream);
FSEventStreamInvalidate(stream); /* will remove from runloop */
FSEventStreamRelease(stream);
}
FSEventStreamContext cntxt = {0};
cntxt.info = self;
CFArrayRef pathsToWatch = CFArrayCreate(NULL, (const void**)&path, 1, NULL);
stream = FSEventStreamCreate(NULL, &feCallback, &cntxt,
pathsToWatch, kFSEventStreamEventIdSinceNow, 1,
kFSEventStreamCreateFlagWatchRoot );
FSEventStreamScheduleWithRunLoop(stream, CFRunLoopGetCurrent(),
kCFRunLoopDefaultMode);
FSEventStreamStart(stream);
}
Run Code Online (Sandbox Code Playgroud)
回电功能:
static void feCallback(ConstFSEventStreamRef streamRef, void* pClientCallBackInfo,
size_t numEvents, void* pEventPaths, const FSEventStreamEventFlags eventFlags[],
const FSEventStreamEventId eventIds[])
{
char** ppPaths = (char**)pEventPaths; int i;
for (i = 0; i < numEvents; i++)
{
NSLog(@"Event Flags %lu Event Id %llu", eventFlags[i], eventIds[i]);
NSLog(@"Path changed: %@",
[NSString stringWithUTF8String:ppPaths[i]]);
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢提前.
我遇到了同样的问题,我想我已经解决了。显然kFSEventStreamCreateFlagWatchRoot只是在使用时被破坏了FSEventStreamCreateRelativeToDevice。你必须使用FSEventStreamCreate. 由于如果您依赖历史事件 ID,则前一种形式更可取,因此您可能需要创建 2 个流。另请注意,如果您的应用程序未运行,则似乎不会kEventFlagChangedRoot发送给您,因此您需要在启动时统计目录。
| 归档时间: |
|
| 查看次数: |
5509 次 |
| 最近记录: |