2

私のC++コードがMacOSXでhdiutilを使用できるようにするシステムコールまたはライブラリが存在しますか?私のコードは、利用可能な.dmgファイルをマウントしてから、その中身を操作する必要があります。

4

3 に答える 3

3

Objective-C ++を使用できる場合は、NSTaskを使用してコマンドラインツールを実行できます。

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/bin/hdiutil"];
[task setArguments:
    [NSArray arrayWithObjects: @"attach", @"/path/to/dmg/file", nil]];
[task launch];
[task waitUntilExit];
if (0 != [task terminationStatus])
    NSLog(@"Mount failed.");
[task release];

「プレーン」C++を使用する必要がある場合は、system()を使用できます。

if (0 != system("/usr/bin/hdiutil attach /path/to/dmg/file"))
    puts("Mount failed.");

またはfork()/ exec()。

hdiutil成功した場合に実際に0が返されるかどうかを再確認する必要があります。

于 2010-01-05T19:17:43.110 に答える
3

hdiutilDiskImages.frameworkを使用します。残念ながら、フレームワークはプライベート(文書化されていない、ヘッダーなし)ですが、冒険心があれば、とにかくそれを使用してみることができます。

于 2010-01-05T20:10:31.563 に答える
1

hdiutil-plist出力を標準のOSXplistとしてフォーマットする引数があります。hdiutilからの出力の処理に関する情報については、これを参照してください。必要なものを見つけるために出力を少し調べる必要がある可能性があるため、最初は。のようなものを使用してこれを行うのは簡単かもしれませんpython。次に、C ++でのplistの解析に関するいくつかの提案については、ここを参照してください。

于 2010-01-05T22:18:49.440 に答える