我想监视mac上几个目录的文件系统事件。我想要监视的目录可能会在运行时更改,因此在这里使用FSEvents是我的应用程序所做的:
Stuff似乎主要起作用,但是我注意到调用回调和将'eventPaths'值发送到回调时有些奇怪。
例如,如果我为/ Foo和/ Bar创建了StreamRef,如果我在/ Bar中添加一个文件,我的回调几乎立即被调用,但是eventPaths指向/ Foo中的一个位置,以及我关联的上下文StreamRef也是/ Foo的。
或者说,我正在监视/ Foo和/ Bar然后删除/ Bar(通过正确停止和关闭StreamRef for / Bar)。我现在为/ Fee创建一个新的FSEventStreamRef并与同一个回调相关联。我对/ Fee所做的任何更改都不会导致调用回调,但是对/ Foo的更改会继续引发回调。
我在网上看到的任何示例或文档都只讨论监控单个文件夹。我是如何将单个回调与多个FSEventStreamRefs联系起来的?听起来这应该不是问题......
是否有人以可靠的方式做了类似的事情,或者对我可能尝试不同的方式提出了什么建议?
我尝试做的一件事就是尝试使用单个FSEventStreamRef,并将CFArrayRef传递给我想要的所有路径,当我的监视列表更改并重新创建新的FSEventStreamRef时 - 这个工作正常更糟糕的是上述情况。