OS X: Welches Volumen ist eine DVD?
Frage
Wie kann ich programmgesteuert bestimmen, welche (falls vorhanden) montierten Volumina eine DVD sind?
Ich suche derzeit nach einem Verzeichnis mit den Berechtigungen 555, aber ich würde etwas weniger hackig bevorzugen. Vielen Dank!!
$ ls -l /Volumes/
total 12
dr-xr-xr-x 4 mh gfx 136 Aug 3 2001 DQRMX2102
lrwxr-xr-x 1 root admin 1 Apr 6 15:09 Macintosh HD -> /
drwxrwxr-x 9 mh gfx 374 Feb 3 12:55 data
Lösung
Welche Programmiersprache/welches Toolkit verwenden Sie?
Wenn Sie Kakao in Objective-C verwenden, können Sie NsWorkspace:
NSArray *volumes = [[NSWorkspace sharedWorkspace] mountedRemovableMedia];
Wenn Sie aus der Befehlszeile oder einem Skript oder so etwas herausfinden möchten, diskutil
sollte nützlich sein.
$ diskutil info -plist /Volumes/Foobar
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...snip...
<key>OpticalMediaType</key>
<string>CD-ROM</string>
...snip...
</dict>
</plist>
Andere Tipps
Für Kakao können Sie NsWorkspace verwenden Mountedremovablemedia: um eine Liste von Bänden und die Verwendung von NsWorkspace zu erhalten GetFilesysteminfo: ... Um weitere Informationen zu jedem montierten Volumen zu erhalten.
- (BOOL)getFileSystemInfoForPath:(NSString *)fullPath
isRemovable:(BOOL *)removableFlag
isWritable:(BOOL *)writableFlag
isUnmountable:(BOOL *)unmountableFlag
description:(NSString **)description
type:(NSString **)fileSystemType
Wenn Sie Systemanrufe tätigen möchten, können Sie verwenden StatFs bei den gleichen Informationen.
int statfs(const char *path, struct statfs *buf);