情境:
我正在使用FSEvents成功监控本地监视文件夹。
使用相同的FSEVents代码来监视来自远程服务器的已装入卷中的目录,例如,AFS(/ Volumes / example)成功通知我的FSEVents回调本地客户端更改的任何文件,但不会通过其他机器上的其他用户 - 即使我确实看到这些更改立即反映在Finder中。
继承我的FSEvents实施:DirectoryWatcher.m
我期待发生的事情:
Finder看到的任何更新,我的FSEVent工具或任何其他适当的API都会检测到这些更改并通知我的应用。当任何用户进行更改时,他们会出现在任何其他用户Finder中,而我的应用程序会通知回调更改。
实际发生的事情:
客户端计算机Bob安装卷'示例'来自Alice的服务器
Bob对“示例”中的任何子目录进行了更改,并且bob的文件观察器应用程序(我的应用:))立即通知更改。耶!
现在Fred登录到Alices服务器并安装'示例'音量,并进行更改。弗雷德被通知 - 耶。鲍勃不是。嘘。此外,Fred不会通知Bob所做的更改。嘘声。
此外,如果Alice直接在服务器上进行更改,Fred和Bob都没有触发FSEvents - 即使在所有情况下,Finder都会立即知道更改并在更改时更新文件列表和图标。
问题:
任何人都有关于远程服务器上的文件系统事件通知的指示?除了这个问题,FSEvents几乎是完美的。轮询是唯一的选择吗?
我认为AFS / SMB协议已为发生更改的客户端提供了通知工具 - 但这些更改不在文件系统级别,并且此FSEVents不知道。 IE:Finder知道因为它被分配到协议事件流中,而不仅仅是文件系统事件流?
如果没有投票,这是否可行?
注意,我正在测试10.13到10.11。
谢谢!