【发布时间】:2012-02-03 13:20:48
【问题描述】:
当你在 osx 上挂载任何东西时,它会显示在 /Volumes/mountname 下
有什么方法可以使用命令行或 C/C++ 将卷识别为 CD/DVD ROM?
我目前最好的想法是这样的。
df | grep mountname
获取 /dev/diskNsM 路径
然后
drutil | grep /dev/diskN
查看路径挂载的设备是否为刻录机。
这可行,但我担心 CD/DVD 不是刻录机的情况。它还会出现在 drutil 的输出中吗? Mac 甚至还附带非刻录 CD/DVD 驱动器吗?
我更喜欢使用 C、C++ 或 Objective C 来做到这一点。
我已经用过了
const char *tmp = '/Volumes/mysterydrive';
statfs(tmp, &m);
if(m.f_flags & MNT_RDONLY)
{
read_only = true;
}
判断卷是否为只读, 但我看不到这个或任何相关的调用是否可以区分 CD/DVD 和只读安装的卷。
它只需要适用于 OSX 10.5 和更新版本。
有什么想法吗?
编辑:
使用
diskutil info /Volumes/mysterydrive
如果是 CD/DVD,我得到以下输出
Optical Drive Type: CD-ROM, CD-R, CD-RW, DVD-ROM, DVD-R, DVD-R DL, DVD-RW, DVD+R, DVD+R DL, DVD+RW
Optical Media Type: DVD-R
Optical Media Erasable: No
这就是我所需要的!
我稍后会考虑使用 IOKit 以编程方式执行此操作,但这似乎是完成它的最快方法。
【问题讨论】:
标签: c++ c macos bash filesystems