OSX 文件系统事件 - 单元测试

OSX File System Events - unit testing

我正在为处理文件系统事件的代码进行单元测试 API。它在文件和子目录中创建一个包含随机数据的目录树,然后对这些文件执行一些更改并测试更改是否得到正确处理。

但是,这仅适用于在某些用户 space 目录中创建文件的情况,例如在我自己的桌面上。当我尝试将测试文件放在 /tmpNSTemporaryDirectory() 之类的位置时,侦听器不会收到任何事件。 /var/tmp 等目录中的更改是否根本没有被文件系统事件 API 记录?或者这是这些目录的权限问题?我的应用程序的这一部分没有使用沙盒。

更新

问题出在我的代码的其他地方,文件系统事件适用于整个文件系统。请参阅下面的答案,了解我的一些不相关的修复方法。

问题出在我的代码为我的文件系统侦听器设置目录时。为了将来参考,对我有用的语法如下。目录变量可以从其他地方传入。

NSArray* directories = @[@"/Users/name/Documents", @"/tmp"];
CFArrayRef pathsToWatch = (__bridge CFArrayRef)(directories);

然后将 pathsToWatch 变量传递给 FSEventStreamCreate 调用。