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;
}

: 그리고 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");

관련 정보