如何以编程方式获得Linux设备/分区的uuid?

我对Linux编程非常陌生。

我的问题是:

  • 有没有办法以编程方式读取Linux中的设备或分区的UUID?
  • 用户空间应用程序是否有任何C / C ++ API?

我发现一些命令sudo vol_id --uuid /dev/sda1sudo blkidls -l /dev/disk/by-uuid/ 。 但是他们都是需要在terminal上运行的命令。 但是我需要从C / C ++程序来实现。

有人能帮我解决这个问题吗? (仅供参考:我需要读取已安装Linux的根文件系统(“/”)的UUID。)

先谢谢你。

一般的做法是:

  • 例如,通过解析/etc/mtab来找出你的设备
  • 通过/dev/disks/by-uuid目录(使用opendir/readdir/closedir )并找到哪一个指向该设备。

请参阅readlink函数以获取符号链接的目标。 你会发现很多代码示例来解析这个网站上的文本文件或者你喜欢的搜索引擎。

既然blkid已经做到了, 如果遵守util-linux的许可证(GPLv2),你也可以看到它是如何工作的,并且偷走了解决方案。