Mac上的hdiutil的C ++接口

时间:2010-01-05 19:06:23

标签: c++ macos hdiutil

是否存在允许我的C ++代码在Mac OS X上使用hdiutil的系统调用或库。我的代码需要挂载一个可用的.dmg文件,然后操作里面的内容。

3 个答案:

答案 0 :(得分: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才能成功。

答案 1 :(得分:3)

hdiutil使用DiskImages.framework;不幸的是,框架是私有的(没有文档,没有标题),但如果你有冒险精神,你可以try to use it anyway

答案 2 :(得分:1)

hdiutil有一个-plist参数,使其将输出格式化为标准OS X plist。有关处理hdiutil输出的信息,请参阅this;因为您可能需要稍微检查输出以找到所需内容,所以最初可能很容易使用python之类的内容。然后请参阅here以获取有关在C ++中解析plist的一些建议。