我正在处理代码处理文件系统事件API的单元测试。它在文件和子目录中创建一个包含随机数据的目录树,然后对这些文件执行一些更改并测试是否正确处理了更改。
但是,这仅适用于在某个用户空间目录中创建文件的情况,例如在我自己的桌面上。当我尝试将测试文件放在/tmp
或NSTemporaryDirectory()
的位置时,侦听器不会收到任何事件。文件系统事件API中是否记录了/var
和/tmp
等目录中的更改?或者这是对这些目录的权限问题?我没有在我的应用程序的这一部分使用Sandbox。
更新
问题出在我的代码的其他地方,文件系统事件确实适用于整个文件系统。请参阅以下答案,了解我的一些不相关的修复方法。
答案 0 :(得分:0)
问题在于我的代码为我的文件系统监听器设置了目录。为了将来参考,对我有用的语法如下。目录变量可以从其他地方传入。
NSArray* directories = @[@"/Users/name/Documents", @"/tmp"];
CFArrayRef pathsToWatch = (__bridge CFArrayRef)(directories);
然后pathsToWatch
变量会传递到FSEventStreamCreate
来电。