c++ - 如何查找已安装的驱动器是否确实存在于 Mac 上

标签 c++ macos cocoa boost filesystems

我实际上想要实现的是找出我从网络安装的驱动器何时断开连接。 为此,我从一个非常简单的方法开始,我使用了:

boost::文件系统::存在

在驱动器的安装路径上(我们可以在/Volumes/中找到)。 例如对于计算机上的驱动器: smb://XYZ/驱动器 安装后,我可以看到它像: /卷/驱动器 后者是我使用 boost::filesystem::exists 的驱动器,

所以我希望一旦断开网络,/Volumes 中安装的卷将立即被清除,一切都会简单地进行。

但是, 后来我意识到,在网络断开时,OSX 需要很长时间才能从/Volumes 目录中清除驱动器。

是否有苹果 API 可以判断出现在/Volumes 中的数量是否有效。

提前致谢。

最佳答案

NSFileManager 上有一个方法可以让您轻松查看已挂载的卷:

- (NSArray*) mountedVolumeURLsIncludingResourceValuesForKeys:option - Returns an array of URLs that identify the mounted volumes available on the computer.

虽然我不知道这如何处理停滞的坐骑。您还需要查明这些安装的卷是网络卷还是磁盘镜像。

如果您想要在交易量来来去去时收到通知,您可以使用 File System Events API .它的级别更低一些,但您基本上可以要求它“在 /Volumes/* 下的结构发生变化时通知我。

关于c++ - 如何查找已安装的驱动器是否确实存在于 Mac 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475490/

相关文章:

macos - 如何在 OSX 中使用 Swift 发送 api key 进行身份验证?

ios - Objective-C,NSMutableData 未发布

c++ - C/C++ 编译器对运算符优先级/求值有多严格?

c++ - 如果 socket fd 在 cpp linux 中超过 1024,则 recv 失败

python - 在 OS X 上安装 h5py

mysql - 将 MySQL 数据库从一个 AMPPS 安装转移到较新的安装

ios - NSURLSession 将 header 'Connection' 设置为 'Upgrade' 不起作用

objective-c - 如何将具有浮点值的数组保存到 Mac 可读的文本文件中?

c++ - 相对于彼此重载 operator++ 前缀/后缀?

c++ - gstreamermm:如何提取 Gst::PlayBin 的最后一个视频帧