linux - 使用 libblkid 查找分区的 UUID

标签 linux uuid

我在看 libblkid并对文档感到困惑。有人可以为我提供一个示例,说明如何使用此库找到根 Linux 分区的 UUID 吗?

最佳答案

它几乎和手册中描述的一样简单:您创建一个探测结构,对其进行初始化,询问它一些信息,然后释放它。您可以将前两个步骤合并为一个。这是一个工作程序:

#include <stdio.h>
#include <stdlib.h>
#include <err.h>
#include <blkid/blkid.h>

int main (int argc, char *argv[]) {
  blkid_probe pr;
  const char *uuid;

  if (argc != 2) {
    fprintf(stderr, "Usage: %s devname\n", argv[0]);
    exit(1);
  }

  pr = blkid_new_probe_from_filename(argv[1]);
  if (!pr) {
    err(2, "Failed to open %s", argv[1]);
  }

  blkid_do_probe(pr);
  blkid_probe_lookup_value(pr, "UUID", &uuid, NULL);

  printf("UUID=%s\n", uuid);

  blkid_free_probe(pr);

  return 0;
}

blkid_probe_lookup_valueuuid 设置为指向属于 pr 结构的字符串,这就是参数类型为 的原因常量字符 *。如果需要,您可以将其复制到您自己管理的 char *,但如果只是传递给 printf,则不需要这样做。 blkid_probe_lookup_value 的第四个参数允许您获取返回值的长度,以备不时之需。 blkid_do_probeblkid_do_safeprobeblkid_do_fullprobe 之间存在一些细微差别,但在设备具有已知文件系统并且您只想拉取的情况下从中提取 UUID,从 blkid_do_probe 中获取第一个结果应该可以。

关于linux - 使用 libblkid 查找分区的 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6748429/

相关文章:

python - 使用套接字 : address already in use 监听 ip 地址

linux - 将 .text 部分放在 ELF 的最后

ios - 我可以获得已安装的 iOS 应用程序的 UUID 吗?

c# - 如何将MySQL生成的UUID放入C#变量中

grails - GRAILS UUID和PSQL的问题

java - 将 UUID 存储为 base64 字符串

linux - 从 Windows 添加 Shell 脚本到 CVS

Python 记录到同一个文件,不同的用户

linux - CentOS : How to uninstall gerrit server from CentOS release 6. 4

algorithm - 更改 CouchDB 中的 UUID 算法