3

我需要在我的应用程序中确定 Mac 中的哪些内部驱动器是引导驱动器。我不确定驱动器是否有任何特定属性或任何特定文件可以帮助我唯一地识别内部引导驱动器。“diskutil info”命令给出了切片的“可引导”属性,但该属性不够好,因为该属性对于单个驱动器的多个切片或所有驱动器返回为 true。

4

1 回答 1

2

您可以使用“祝福”命令,例如

$ /usr/sbin/bless --info --getBoot
/dev/disk0s2

有关更多信息,请参见“人保佑”。使用“--plist”参数,可以轻松地将输出解析为 a NSDictionary,以下示例代码演示了这一点:

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/usr/sbin/bless"];
[task setArguments:@[@"--info", @"--getBoot", @"--plist"]];
NSPipe * out = [NSPipe pipe];
[task setStandardOutput:out];

[task launch];
[task waitUntilExit];

NSFileHandle *read = [out fileHandleForReading];
NSData *data = [read readDataToEndOfFile];
NSDictionary* plist = [NSPropertyListSerialization propertyListWithData:data options:0 format:NULL error:NULL];
NSLog(@"output: %@", plist);

输出:

{
    "Boot Volume" = "/dev/disk0s2";
}
于 2013-03-26T03:22:03.953 回答