当前位置: 技术问答>linux和unix
小妹儿-请问大家 如何获得linux 的卷标[label]
来源: 互联网 发布时间:2017-04-17
本文导语: To All: 请问如何获得 Linux的卷标通过编程或者系统函数,不要命令。 谢谢。 | 首先,我们知道blkid这条命令可以打印磁盘分区的卷标。 好,找一下blkd用了什么方式做的: serval@ubuntu:~$ which blk...
To All:
请问如何获得 Linux的卷标通过编程或者系统函数,不要命令。
谢谢。
请问如何获得 Linux的卷标通过编程或者系统函数,不要命令。
谢谢。
|
首先,我们知道blkid这条命令可以打印磁盘分区的卷标。
好,找一下blkd用了什么方式做的:
serval@ubuntu:~$ which blkid | xargs ldd
linux-gate.so.1 => (0xb771a000)
libblkid.so.1 => /lib/i386-linux-gnu/libblkid.so.1 (0xb76d9000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7530000)
libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xb7529000)
/lib/ld-linux.so.2 (0xb771b000)
看起来用了一个库libblkid,于是到网上找这个库的用法:
http://stackoverflow.com/questions/6748429/using-libblkid-to-find-uuid-of-a-partition
最后,照葫芦画瓢写出代码:
好,找一下blkd用了什么方式做的:
serval@ubuntu:~$ which blkid | xargs ldd
linux-gate.so.1 => (0xb771a000)
libblkid.so.1 => /lib/i386-linux-gnu/libblkid.so.1 (0xb76d9000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7530000)
libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xb7529000)
/lib/ld-linux.so.2 (0xb771b000)
看起来用了一个库libblkid,于是到网上找这个库的用法:
http://stackoverflow.com/questions/6748429/using-libblkid-to-find-uuid-of-a-partition
最后,照葫芦画瓢写出代码:
#include
#include
#include
#include
int main(int argc, char **argv)
{
blkid_probe pr;
const char *label;
if(argc != 2) {
fprintf(stderr, "Usage: %s devnamen", argv[0]);
exit(1);
}
pr = blkid_new_probe_from_filename(argv[1]);
if(!pr) {
err(2, "fail to open %s", argv[1]);
}
blkid_do_probe(pr);
blkid_probe_lookup_value(pr, "LABEL", &label, NULL);
printf("label = %sn", label);
blkid_free_probe(pr);
return 0;
}