Интерфейс C ++ для hdiutil на Mac - PullRequest
2 голосов
/ 05 января 2010

Существует ли системный вызов или библиотека, которые позволили бы моему коду C ++ использовать hdiutil в Mac OS X. Мой код должен монтировать доступный файл .dmg и затем манипулировать тем, что внутри.

Ответы [ 3 ]

3 голосов
/ 05 января 2010

hdiutil использует DiskImages.framework; к сожалению, фреймворк является приватным (без документов, без заголовков), но если вы чувствуете себя авантюрным, вы можете попробовать использовать его в любом случае .

3 голосов
/ 05 января 2010

Если вы можете использовать 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 для успеха или нет.

1 голос
/ 06 января 2010

hdiutil имеет аргумент -plist, который заставляет его форматировать вывод в виде стандартного списка OS X. Смотрите this для получения информации об обработке вывода из hdiutil; так как вам, вероятно, придется немного изучить вывод, чтобы найти то, что вам нужно, может быть легко сделать это изначально с помощью чего-то вроде python Затем посмотрите здесь , чтобы найти некоторые предложения по синтаксическому анализу списков в C ++.

...