| UUID_GENERATE(3) | Programmerarens handbok | UUID_GENERATE(3) |
NAMN¶
uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe - skapa ett nytt unikt UUID-värde
SYNOPSIS¶
#include <uuid.h>
void uuid_generate(uuid_t out);
void uuid_generate_random(uuid_t out);
void uuid_generate_time(uuid_t out);
int uuid_generate_time_safe(uuid_t out);
void uuid_generate_md5(uuid_t out, const uuid_t
ns, const char *name, size_t
len);
void uuid_generate_sha1(uuid_t out, const uuid_t
ns, const char *name, size_t
len);
BESKRIVNING¶
Funktionen uuid_generate() skapar en ny universellt unik identifierare (UUID). UUID:n genereras baserat på högkvalitativ slumpmässighet från getrandom(2), /dev/urandom eller /dev/random om det finns tillgängligt. Om den inte är tillgänglig kommer uuid_generate() att använda en alternativ algoritm som använder aktuell tid, den lokala Ethernet MAC-adressen (om den är tillgänglig) och slumpmässiga data som genererats med en pseudoslumpgenerator.
Funktionen uuid_generate_random(3) tvingar fram användningen av det helt slumpmässiga UUID-formatet, även om en slumptalsgenerator av hög kvalitet inte är tillgänglig, i vilket fall en pseudoslumptalsgenerator används i stället. Observera att användningen av en pseudoslumpgenerator kan äventyra unikheten hos UUID:er som genereras på detta sätt.
Funktionen uuid_generate_time(3) tvingar fram användningen av den alternativa algoritmen som använder aktuell tid och den lokala Ethernet MAC-adressen (om den är tillgänglig). Den här algoritmen var tidigare standardalgoritmen för att generera UUID:er, men eftersom MAC-adressen för Ethernet används kan den läcka information om när och var UUID:en genererades. Detta kan orsaka integritetsproblem i vissa tillämpningar, så funktionen uuid_generate() använder endast denna algoritm om en slumpmässig källa av hög kvalitet inte finns tillgänglig. För att garantera att UUID:er som genereras av processer som körs samtidigt är unika använder uuid-biblioteket en global klockstatusräknare (om processen har behörighet att få exklusiv åtkomst till den här filen) och/eller demonen uuidd(8), om den redan körs eller kan startas av processen (om den är installerad och processen har tillräckliga behörigheter för att köra den). Om ingen av dessa två synkroniseringsmekanismer kan användas är det teoretiskt möjligt att två processer som körs samtidigt får samma UUID(er). Om du vill veta om UUID har genererats på ett säkert sätt använder du uuid_generate_time_safe(3).
Funktionen uuid_generate_time_safe(3) liknar uuid_generate_time(3), förutom att den returnerar ett värde som anger om någon av synkroniseringsmekanismerna (se ovan) har använts.
UUID:et är 16 byte (128 bitar) långt, vilket ger ca 3,4x10^38 unika värden (det finns ca 10^80 elementarpartiklar i universum enligt Carl Sagans Cosmos). Det nya UUID:t kan rimligen anses vara unikt bland alla UUID:n som skapats på det lokala systemet och bland UUID:n som skapats på andra system i det förflutna och i framtiden.
Funktionerna uuid_generate_md5(3) och uuid_generate_sha1(3) genererar en MD5- och SHA1-hashad (förutsägbar) UUID baserat på en välkänd UUID som tillhandahåller namnrymden och en godtycklig binär sträng. UUID:erna överensstämmer med V3- och V5-UUID:er enligt RFC-4122 <https://tools.ietf.org/html/rfc4122>.
RETURVÄRDE¶
Det nyskapade UUID:t returneras till den minnesplats som out pekar på. uuid_generate_time_safe(3) returnerar noll om UUID har genererats på ett säkert sätt, annars -1.
I ÖVERENSSTÄMMELSE MED¶
Detta bibliotek genererar UUID:er som är kompatibla med OSF DCE 1.1 och hashbaserade UUID:er V3 och V5 som är kompatibla med RFC-4122 <https://tools.ietf.org/html/rfc4122>.
UPPHOVSPERSONER¶
Theodore Y. Ts’o
SE ÄVEN¶
uuidgen(1), uuid(3), uuid_clear(3), uuid_compare(3), uuid_copy(3), uuid_is_null(3), uuid_parse(3), uuid_time(3), uuid_unparse(3), uuidd(8)
FELRAPPORTERING¶
För felrapporter, använd felhanteraren <https://github.com/util-linux/util-linux/issues>.
TILLGÄNGLIGHET¶
Biblioteket libuuid är en del av paketet util-linux sedan version 2.15.1. Det kan laddas ner från Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.
| 2026-09-25 | util-linux 2.42.4 |