从C代码获取系统UUID?

从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

正确的做法是什么?

答案1

您正在尝试/sys/class/dmi/id/product_uuid作为命令运行;这是您需要阅读的文件。

代替

FILE * fd = popen(SYS_UUID_PATH, "r");

你需要使用

FILE * fd = fopen(SYS_UUID_PATH, "r");

相关内容