1

マウントされたボリューム (存在する場合) が DVD であることをプログラムで判別するにはどうすればよいですか?

私は現在、パーミッションが 555 のディレクトリを探していますが、ハックが少ないものを好みます。ありがとう!!

$ 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
4

2 に答える 2

5

どのプログラミング言語/ツールキットを使用していますか?

Objective-C で Cocoa を使用している場合は、NSWorkspaceを実行できます。

NSArray *volumes = [[NSWorkspace sharedWorkspace] mountedRemovableMedia];

コマンドラインやスクリプトなどから調べたい場合はdiskutil、重宝するはずです。

$ 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>
于 2009-04-07T00:56:12.153 に答える
3

Cocoa の場合、NSWorkspace MountedRemovableMedia:を使用してボリュームのリストを取得し、NSWorkspace getFileSystemInfo:...を使用してマウントされた各ボリュームに関する詳細情報を取得できます。

- (BOOL)getFileSystemInfoForPath:(NSString *)fullPath 
                     isRemovable:(BOOL *)removableFlag 
                      isWritable:(BOOL *)writableFlag 
                   isUnmountable:(BOOL *)unmountableFlag 
                     description:(NSString **)description 
                            type:(NSString **)fileSystemType

システム コールを作成する場合は、同じ情報でstatfsを使用できます。

int statfs(const char *path, struct statfs *buf);
于 2009-04-07T01:11:38.840 に答える