当你在OSX上挂载任何内容时,它会显示在/Volumes/mountname下。
是否有任何方法,使用命令行或C/C++来识别卷作为CD/DVD光盘?
我目前最好的想法是这样的。
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进行程序化处理,但这似乎是最快完成的方式。