我在看libblkid,並對文檔感到困惑。有人能給我提供一個如何使用這個庫來找到根分區的UUID的例子嗎?使用libblkid查找分區的UUID
5
A
回答
12
它和手冊看起來一樣簡單:創建一個探針結構,初始化它,詢問一些信息,然後釋放它。你可以將前兩步合併爲一個。這是一個工作程序:
#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
套uuid
指向屬於pr
結構,這就是爲什麼說法是const char *
類型的字符串。如果需要,您可以將其複製到您自己管理的char *
,但僅傳遞給printf
,這不是必需的。 blkid_probe_lookup_value
的第四個參數可以讓你獲得返回值的長度,以防你也需要。 blkid_do_probe
,blkid_do_safeprobe
和blkid_do_fullprobe
之間有一些細微差別,但是在設備具有已知文件系統並且只是想將UUID拉出來的情況下,應該從blkid_do_probe
開始獲取第一個結果。
4
首先,您需要查找以root身份掛載的設備。見人得意(3)。知道設備後,按hobbs所述使用blkid_new_probe_from_filename。
#include <stdio.h>
#include <mntent.h>
int main() {
FILE* fstab = setmntent("/etc/mtab", "r");
struct mntent *e;
const char *devname = NULL;
while ((e = getmntent(fstab))) {
if (strcmp("/", e->mnt_dir) == 0) {
devname = e->mnt_fsname;
break;
}
}
printf("root devname is %s\n", devname);
endmntent(fstab);
return 0;
}
+0
這是非常有幫助的,我將它與hobbs文章結合起來,我會看到會發生什麼。謝謝 – HighLife
相關問題
- 1. 錯誤使用libblkid
- 2. SQL:查找的UUID
- 3. 使用android UUID查找設備位置
- 4. 查找用於BT套接字的UUID
- 5. 通過UUID查找音量
- 6. 通過UUID查找HKObject
- 7. 在Android 2.0中查找UUID
- 8. 如何使用其UUID查找iOS應用的名稱
- 9. 查找區分記錄
- 10. 使用CGContextEOFillPath查找區域
- 11. 如何區分用戶與查找
- 12. 添加和查找表中的UUID
- 13. 查找設備的UUID - UniqueDeviceID插件
- 14. 清理失敗的UUID通道查找
- 15. AirLocate只查找特定的UUID嗎?
- 16. 查詢分區/使用WMI
- 17. 使用分段樹查找重疊區間的總長度?
- 18. 與最小查找的圖形分區邊線交叉分區
- 19. 通過UUID(轉換ObjectId到UUID)在MongoDB中查找文檔
- 20. 查找數組的等效分區
- 21. 查找表分區的詳細信息
- 22. elasticsearch/graylog查找uuid字符串
- 23. 在UEFI中獲取分區uuid分區的最簡單方法是什麼?
- 24. 如何使用row_number和分區查找重複值
- 25. 使用查找重複排名在分區
- 26. 查找分區大小使用DF和awk
- 27. 使用XmlSlurper/GPath查找xml元素值不區分大小寫?
- 28. 將使用UUID
- 29. 卡桑德拉:查找分區鍵
- 30. 使用ANT查找工作區位置
此示例要求我輸入分區作爲正確的論點?我將如何檢查ROOT分區的UUID? – HighLife
定義「ROOT分區」。裝在'/'上的設備? – hobbs
yes安裝在/ – HighLife