'\" t
.\"     Title: uuid_generate
.\"    Author: [see the "AUTHOR(S)" section]
.\" Generator: Asciidoctor 2.0.26
.\"      Date: 2026-09-02
.\"    Manual: Podręcznik programisty
.\"    Source: util-linux 2.42.3
.\"  Language: English
.\"
.TH "UUID_GENERATE" "3" "2026-09-02" "util\-linux 2.42.3" "Podręcznik programisty"
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.ss \n[.ss] 0
.nh
.ad l
.de URL
\fI\\$2\fP <\\$1>\\$3
..
.als MTO URL
.if \n[.g] \{\
.  mso www.tmac
.  am URL
.    ad l
.  .
.  am MTO
.    ad l
.  .
.  LINKSTYLE blue R < >
.\}
.SH "NAZWA"
uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe \- tworzy nową, unikalną wartość UUID
.SH "SKŁADNIA"
.sp
\fB#include <uuid.h>\fP
.sp
\fBvoid uuid_generate(uuid_t \fIout\fP);\fP
.br
\fBvoid uuid_generate_random(uuid_t \fIout\fP);\fP
.br
\fBvoid uuid_generate_time(uuid_t \fIout\fP);\fP
.br
\fBint uuid_generate_time_safe(uuid_t \fIout\fP);\fP
.br
\fBvoid uuid_generate_md5(uuid_t \fIout\fP, const uuid_t \fIns\fP, const char \fI*name\fP, size_t \fIlen\fP);\fP
.br
\fBvoid uuid_generate_sha1(uuid_t \fIout\fP, const uuid_t \fIns\fP, const char \fI*name\fP, size_t \fIlen\fP);\fP
.SH "OPIS"
.sp
Funkcja \fBuuid_generate\fP() tworzy nowy uniwersalnie unikalny identyfikator (UUID). Wartość uuid będzie wygenerowana na podstawie losowości o wysokiej jakości pozyskanej z \fBgetrandom\fP(2), \fI/dev/urandom\fP lub \fI/dev/random\fP, jeśli są one dostępne. Jeśli są niedostępne, \fBuuid_generate\fP() użyje alternatywnego algorytmu, który korzysta z bieżącego czasu, lokalnego adresu ethernetowego MAC (jeśli jest dostępny) oraz losowych danych wygenerowanych przez generator pseudolosowy.
.sp
Funkcja \fBuuid_generate_random\fP(3) wymusza użycie w pełni losowego formatu UUID, nawet jeśli generator liczb losowych o wysokiej jakości nie jest dostępny; wówczas zostanie zastąpiony generatorem pseudolosowym. Proszę zauważyć, że korzystanie z generatora pseudolosowego może naruszyć unikalność wygenerowanych w ten sposób UUID\-ów.
.sp
Funkcja \fBuuid_generate_time\fP() wymusza użycie alternatywnego algorytmu, który korzysta z bieżącego czasu oraz lokalnego adresu ethernetowego MAC (jeśli jest dostępny). Algorytm ten był niegdyś domyślnym używanym do generowania UUID\-ów, lecz z powodu używania adresu MAC ethernetu, może powodować wyciek informacji na temat czasu i miejsca wygenerowania UUID\-u. W pewnych zastosowaniach może to być problematyczne pod względem prywatności, dlatego funkcja \fBuuid_generate\fP() korzysta z tego algorytmu tylko, jeśli źródło losowości o wysokiej jakości jest niedostępne. Aby zagwarantować unikalność UUID\-ów generowanych przez równolegle działające procesy, biblioteka uuid korzysta z globalnego licznika stanu zegara (jeśli proces ma uprawnienia do uzyskania wyłącznego dostępu do tego pliku) i/lub demona \fBuuidd\fP(8), jeśli taki już działa lub może być przywołany przez proces (jeśli jest zainstalowany, a proces ma wystarczające uprawnienia do jego uruchomienia). Jeśli nie da się wykorzystać żadnego z opisanych dwóch mechanizmów synchronizacji, teoretycznie może się zdarzyć, że dwa równolegle działające procesy uzyskają ten sam UUID. Aby sprawdzić, czy UUID został utworzony w bezpieczny sposób, proszę użyć \fBuuid_generate_time_safe\fP(3).
.sp
Funkcja \fBuuid_generate_time_safe\fP(3) jest podobna do \fBuuid_generate_time\fP(3) z tą różnicą, że zwraca wartość wskazującą, czy użyto któregoś z mechanizmów synchronizacyjnych (zob. wyżej).
.sp
UUID jest wartością 16\-bajtową (128 bitową), co daje około 3.4x10^38 unikalnych wartości (zgodnie z książką \fIKosmos\fP Carla Sagana we wszechświecie jest około 10^80 cząstek elementarnych). Nowy UUID można zatem rozsądnie uważać za unikalny pośród wszystkich UUID\-ów utworzonych w lokalnym systemie oraz pośród UUID\-ów utworzonych w innych systemach w przeszłości i w przyszłości.
.sp
Funkcje \fBuuid_generate_md5\fP(3) i \fBuuid_generate_sha1\fP(3) tworzą (przewidywalne) UUID\-y korzystające ze skrótów MD5 i SHA1, używając znanego, zdefiniowanego UUID\-u wskazującego przestrzeń nazw i dowolnego łańcucha binarnego. UUID\-y są zgodne z UUID\-ami V3 i V5 z \c
.URL "https://tools.ietf.org/html/rfc4122" "RFC\-4122" "."
.SH "WARTOŚĆ ZWRACANA"
.sp
Nowo tworzone UUID\-y są zwracane do położenia pamięci, na które wskazuje \fIout\fP. \fBuuid_generate_time_safe\fP(3) zwraca zero, jeśli UUID wygenerowano w bezpieczny sposób lub \-1 w innym przypadku.
.SH "ZGODNE Z"
.sp
Biblioteka tworzy UUID\-y kompatybilne z OSF DCE 1.1, oraz UUID\-y V3 i V5 powstałe w oparciu o skrót, kompatybilne z \c
.URL "https://tools.ietf.org/html/rfc4122" "RFC\-4122" "."
.SH "AUTORZY"
.sp
Theodore Y. Ts\(cqo
.SH "ZOBACZ TAKŻE"
.sp
\fBuuidgen\fP(1), \fBuuid\fP(3), \fBuuid_clear\fP(3), \fBuuid_compare\fP(3), \fBuuid_copy\fP(3), \fBuuid_is_null\fP(3), \fBuuid_parse\fP(3), \fBuuid_time\fP(3), \fBuuid_unparse\fP(3), \fBuuidd\fP(8)
.SH "ZGŁASZANIE BŁĘDÓW"
.sp
Problemy należy zgłaszać w \c
.URL "https://github.com/util\-linux/util\-linux/issues" "systemie śledzenia błędów" "."
.SH "DOSTĘPNOŚĆ"
.sp
Biblioteka \fBlibuuid\fP jest częścią pakietu util\-linux od wersji 2.15.1. Można go pobrać ze strony \c
.URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Archiwum jądra Linux" "."
