我实际想要实现的是找出我从网络安装的驱动器何时断开连接。 我用一个非常简单的方法开始,我使用了:
升压::文件系统::存在
在驱动器的安装路径上(我们可以在/ Volumes /中找到)。 例如在计算机上的驱动器: SMB:// XYZ /驱动 安装后,我可以看到它像: /卷/驱动器 后来是我使用boost :: filesystem :: exists,
的驱动器所以我希望一旦断开网络连接,就会立即清除/ Volumes中挂载的卷,一切都会正常工作。
,但 后来我意识到在网络断开连接上OSX需要永远从/ Volumes目录清除驱动器。
是否有苹果API可以判断/ Volumes中显示的已计量量是否有效。
提前致谢。
答案 0 :(得分:1)
NSFileManager
上有一种方法可让您轻松查看已装载的卷:
- (NSArray*) mountedVolumeURLsIncludingResourceValuesForKeys:option
- 返回一组URL,用于标识计算机上可用的已装入卷。
我不知道这是如何解决陷入困境的坐骑。您还需要确定这些已安装的卷是网络卷还是磁盘映像。
如果您想在卷来来往时收到通知,可以使用File System Events API。这是一个更低级别,但你基本上可以要求它'/Volumes/*
下的结构发生变化时通知我。
答案 1 :(得分:1)
您想要NSWorkspace
' s notifications:
NSWorkspaceDidRenameVolumeNotification
NSWorkspaceDidMountNotification
NSWorkspaceWillUnmountNotification
NSWorkspaceDidUnmountNotification
最后三个通知在@"NSDevicePath"
字典中包含userInfo
键。如果强行删除设备,则WillUnmount
不会被发送,DidUnmount
会执行此操作。使用两者的组合,你可以得到一个适当的警告,以及#34;好的卸载"在一个理想的情况下处理事物的网络卷,但在所有情况下,我都没有任何真正的问题依赖于DidUnmount
来告诉我一个卷消失了。我在自2003年以来一直在推出的应用中运送代码时使用此功能。