Linux
從 C 程式碼中獲取系統 UUID?
我正在嘗試從 C 程序中獲取系統 UUID,我嘗試了以下操作:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define SYS_UUID_PATH "/sys/class/dmi/id/product_uuid" #define DBUS_MACHINE_ID "/var/lib/dbus/machine-id" int main(int argc, char ** argv) { char buffer[100]; //FILE * fd = popen(DBUS_MACHINE_ID, "r"); FILE * fd = popen(SYS_UUID_PATH, "r"); if (fd== NULL) { printf("No file to open my guy \n"); return -1; } int len = fseek(fd, 0, SEEK_END); printf("size: %d", len); return 0; }
: 並以 root 或 sudo 使用者身份執行,我得到以下輸出:
size: -1root@nabil-Inspiron:/tmp# sh: 1: /sys/class/dmi/id/product_uuid: Permission denied
正確的方法是什麼?
您正在嘗試
/sys/class/dmi/id/product_uuid
作為命令執行;這是您需要閱讀的文件。代替
FILE * fd = popen(SYS_UUID_PATH, "r");
你需要使用
FILE * fd = fopen(SYS_UUID_PATH, "r");