FSEvents:使用检测意外事件路径的默认值编写的plist文件

时间:2015-04-13 12:00:07

标签: objective-c macos cocoa fsevents

我有一个plist文件,使用FSEvents API监视更改。

_fileStream = FSEventStreamCreate(NULL,
                                  &fsevents_apps_callback,
                                  &context,
                                  (__bridge CFArrayRef)[NSArray arrayWithObject:@"/"],
                                  kFSEventStreamEventIdSinceNow,
                                  (CFAbsoluteTime)0.2,
                                  kFSEventStreamCreateFlagFileEvents);

// start the stream on the main event loop
FSEventStreamScheduleWithRunLoop(_fileStream,
                                 CFRunLoopGetCurrent(),
                                 kCFRunLoopDefaultMode);
FSEventStreamStart(_fileStream);

我使用sudo默认值写入plist。  Sudo默认/ Library / Application Support / myApp / file.plist

在我的callBack函数中,事件路径结果是/ Library / Application Support / myApp / file.plist.52738

我担心它被检测为file.plist.2332(一些随机数)而不是file.plist

任何输入为什么会出现这种行为?

如果我们使用PlistBuddy来编写它,它看起来都很好,事件路径是/ Library / Application Support / myApp / file.plist。

1 个答案:

答案 0 :(得分:0)

由于这个原因,可以看到这种行为:

  • 在OS X 10.9及更新版本中,有一个特殊的守护程序执行所有默认的读写操作。它被称为cfprefsd并以root身份和登录用户身份运行。它通过磁盘上的持久性完成所有缓存和刷新以及协调。