我在看libblkid http://ftp.kernel.org/pub/linux/utils/util-linux-ng/libblkid-docs/index.html并对文档感到困惑。有人能给我提供一个示例,说明如何使用这个库找到 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_value
sets uuid
指向属于的字符串pr
结构,这就是参数类型的原因const char *
。如果需要,您可以将其复制到char *
你自己管理,但只是传递给printf
,那是不需要的。第四个参数blkid_probe_lookup_value
允许您获取返回值的长度,以防您也需要。之间存在一些细微的差异blkid_do_probe
, blkid_do_safeprobe
, and blkid_do_fullprobe
,但如果设备有一个已知的文件系统,而您只想从中提取 UUID,则从blkid_do_probe
应该做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)