以编程方式获取OS X磁盘分区UUID

4

我有一个到分区的路径。如何在不使用终端命令的情况下通过编程方式检索该分区的UUID?一个示例将更有帮助。


这可能会对你有所帮助。(https://dev59.com/RkXRa4cB1Zd3GeqPveWr) - iammilind
3
那是MAC,一个48位的网络地址。这似乎是苹果的Mac OSX操作系统。 - MSalters
你的问题中提到了“分区”,但标签却是“卷”。一个分区的UUID与该分区中的“卷”的UUID是不同的。例如,使用@user57368的答案: $ diskutil info /Volumes/Mulch | grep UUID Volume UUID: E1EAC65D-47A2-3AB3-BCE5-BA25FD2C6A30 Disk / Partition UUID: E24032E3-DC36-470E-86B9-C9664026F8EC - FutureNerd
3个回答

8

$ diskutil info / | grep UUID

将此命令从C语言中运行留给读者自己练习。

如果你想要除了根目录之外的其他分区,你可以在/的位置指定挂载点或设备名称(例如disk0s2)。


谢谢您提供终端命令。您能告诉我如何(是否有方法)仅使用C或C++而不使用终端命令来完成吗? - surendran

5
你可以使用磁盘管理框架 (苹果参考)。Chris Suter在他的博客中也提供了一个很好的总结。
您可以通过使用kDADiskDescriptionMediaUUIDKey来获取UUID。Aaron Burghardt在这个邮件列表线程中描述得很好。以下是该链接的摘录:
一旦您拥有了DADisk,请使用DADiskCopyDescription获取属性字典,在其中您将找到具有kDADiskDescriptionMediaUUIDKey键的UUID(请参见DADisk.h以获取可能感兴趣的其他键)。请注意,DADisk是IOMedia对象的包装器,描述字典直接对应于IOMedia对象中的属性。另外,CFShow()对于将描述字典打印到控制台非常有用。

0

我认为最简单的方法是使用polkit

http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.hhttp://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.m 下载 DiskWatcher.h 和 .m 文件。

将它们添加到您的项目中(它没有 ARC,如果您使用 ARC,则需要添加 -fno-objc-arc 标志)

添加 DiskArbiratation 框架 您可以使用

+ (NSString*) diskIdentifierForPath:(NSString*)path;

NSString *UUID1 = [DiskWatcher diskIdentifierForPath:@"/Volumes/Backup900GB"];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接