2010-01-05 52 views

回答

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++,你可以使用系統():

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

或fork()/ exec()。

您需要仔細檢查hdiutil實際上是否成功返回0。

3

hdiutil使用DiskImages.framework;不幸的是,該框架是私人的(無證,沒有標題),但如果你覺得冒險,你可以try to use it anyway

+0

嗨,我只是在hdiutil私人framworks進行一些研究,以便以編程方式附加DMG文件(自HFS +分區以來代表磁盤映像的文件)。我想知道你是否碰巧在DiskImages框架中挖了一點,並尋找正確的方法?謝謝 – Zohar81 2018-02-28 19:28:06

0

hdiutil有一個-plist參數,導致它將其輸出格式化爲標準OS X plist。有關處理hdiutil輸出的信息,請參閱this;因爲您可能需要仔細檢查一下輸出以找到所需的內容,但最初可能會使用類似python的方法來執行此操作。然後請參閱here,以獲得關於在C++中解析plists的一些建議。