Linux

從 C 程式碼中獲取系統 UUID?

  • October 27, 2021

我正在嘗試從 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");

引用自:https://unix.stackexchange.com/questions/675053