.\" -*- coding: UTF-8 -*- .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getrandom 2 "28 iunie 2025" "Pagini de manual de Linux 6.15" .SH NUME getrandom \- obține o serie de octeți aleatorii .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBssize_t getrandom(\fPsize_t buflen; \fB void \fP\fIbuf\fP\fB[\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .SH DESCRIERE Apelul de sistem \fBgetrandom\fP() umple memoria tampon indicată de \fIbuf\fP cu până la \fIbuflen\fP octeți aleatorii. Acești octeți pot fi utilizați pentru însămânțarea generatoarelor de numere aleatorii din spațiul utilizatorului sau în scopuri criptografice. .P În mod implicit, \fBgetrandom\fP() extrage entropia din sursa \fIurandom\fP (adică aceeași sursă ca dispozitivul \fI/dev/urandom\fP). Acest comportament poate fi modificat prin intermediul argumentului \fIflags\fP. .P Dacă sursa \fIurandom\fP a fost inițializată, citirile de până la 256 de octeți vor returna întotdeauna numărul de octeți solicitat și nu vor fi întrerupte de semnale. Nu se aplică astfel de garanții pentru dimensiuni mai mari ale memoriei tampon. De exemplu, dacă apelul este întrerupt de un gestionar de semnal, acesta poate returna un tampon parțial umplut sau poate eșua cu eroarea \fBEINTR\fP. .P Dacă sursa \fIurandom\fP nu a fost încă inițializată, atunci \fBgetrandom\fP() se va bloca, cu excepția cazului în care \fBGRND_NONBLOCK\fP este specificat în \fIflags\fP. .P Argumentul \fIflags\fP este o mască de biți care poate conține zero sau mai multe dintre următoarele valori unite împreună printr\-un operator SAU logic: .TP \fBGRND_RANDOM\fP Dacă acest bit este activat, atunci octeții aleatorii sunt extrași din sursa \fIrandom\fP (adică aceeași sursă ca dispozitivul \fI/dev/random\fP) în locul sursei \fIurandom\fP. Sursa \fIrandom\fP este limitată pe baza entropiei care poate fi obținută din zgomotul ambiental. Dacă numărul de octeți disponibili în sursa \fIrandom\fP este mai mic decât cel solicitat în \fIbuflen\fP, apelul returnează doar octeții aleatori disponibili. Dacă nu sunt disponibili octeți aleatorii, comportamentul depinde de prezența \fBGRND_NONBLOCK\fP în argumentul \fIflags\fP. .TP \fBGRND_NONBLOCK\fP În mod implicit, atunci când citește din sursa \fIrandom\fP, \fBgetrandom\fP() se blochează dacă nu sunt disponibili octeți aleatori, iar atunci când citește din sursa \fIurandom\fP, se blochează dacă fondul de entropie nu a fost încă inițializat. Dacă fanionul \fBGRND_NONBLOCK\fP este activat, atunci \fBgetrandom\fP() nu se blochează în aceste cazuri, ci returnează imediat \-1 cu \fIerrno\fP configurată la \fBEAGAIN\fP. .SH "VALOAREA RETURNATĂ" În caz de succes, \fBgetrandom\fP() returnează numărul de octeți care au fost copiați în memoria tampon \fIbuf\fP. Acesta poate fi mai mic decât numărul de octeți solicitat prin \fIbuflen\fP dacă fie \fBGRND_RANDOM\fP a fost specificat în \fIflags\fP și entropia a fost insuficientă în sursa \fIrandom\fP, fie apelul sistemului a fost întrerupt de un semnal. .P În caz de eroare, se returnează \-1, iar \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEAGAIN\fP Entropia solicitată nu a fost disponibilă, iar \fBgetrandom\fP() s\-ar fi blocat dacă flagul \fBGRND_NONBLOCK\fP nu era activat. .TP \fBEFAULT\fP Adresa menționată de \fIbuf\fP se află în afara spațiului de adrese accesibil. .TP \fBEINTR\fP Apelul a fost întrerupt de un gestionar de semnal; consultați descrierea modului în care apelurile \fBread\fP(2) întrerupte pe dispozitive „lente” sunt gestionate cu și fără fanionul \fBSA_RESTART\fP în pagina de manual \fBsignal\fP(7). .TP \fBEINVAL\fP În \fIflags\fP a fost specificat un fanion nevalid. .TP \fBENOSYS\fP Funcția de învăluire a glibc pentru \fBgetrandom\fP() a determinat că nucleul subiacent nu implementează acest apel de sistem. .SH STANDARDE Linux. .SH ISTORIC Linux 3.17, glibc 2.25. .SH NOTE Pentru o prezentare generală și o comparație a diverselor interfețe care pot fi utilizate pentru a obține caracterul aleatoriu, a se vedea \fBrandom\fP(7). .P .\" tătăSpre deosebire de \fI/dev/random\fP și \fI/dev/urandom\fP, \fBgetrandom\fP() nu implică utilizarea numelor de rută sau a descriptorilor de fișiere. Astfel, \fBgetrandom\fP() poate fi util în cazurile în care \fBchroot\fP(2) face invizibile numele de rută \fI/dev\fP și în care o aplicație (de exemplu, un demon în timpul lansării) închide un descriptor de fișier pentru unul dintre aceste fișiere care a fost deschis de o bibliotecă. .SS "Numărul maxim de octeți returnați" Începând cu Linux 3.19 se aplică următoarele limite: .IP \[bu] 3 La citirea din sursa \fIurandom\fP, un singur apel la \fBgetrandom\fP() returnează maximum 32Mi\-1 octeți pe sistemele în care \fIint\fP are o dimensiune de 32 de biți. .IP \[bu] La citirea din sursa \fIrandom\fP, se returnează un maxim de 512 octeți. .SS "Întreruperea de către un gestionar de semnal" La citirea din sursa \fIurandom\fP (\fBGRND_RANDOM\fP nu este activat), \fBgetrandom\fP() se va bloca până când fondul de entropie a fost inițializat (cu excepția cazului în care a fost specificat fanionul \fBGRND_NONBLOCK\fP). Dacă se solicită citirea unui număr mare de octeți (mai mult de 256), \fBgetrandom\fP() se va bloca până când acești octeți au fost generați și transferați din memoria nucleului în \fIbuf\fP. Atunci când se citește din sursa \fIrandom\fP (\fBGRND_RANDOM\fP este activat), \fBgetrandom\fP() se va bloca până când unii octeți aleatori devin disponibili (cu excepția cazului în care a fost specificat fanionul \fBGRND_NONBLOCK\fP). .P Comportamentul atunci când un apel la \fBgetrandom\fP() care este blocat în timp ce citește din sursa \fIurandom\fP este întrerupt de un gestionar de semnal depinde de starea de inițializare a tamponului de entropie și de dimensiunea cererii, \fIbuflen\fP. Dacă entropia nu este încă inițializată, atunci apelul eșuează cu eroarea \fBEINTR\fP. Dacă fondul de entropie a fost inițializat și dimensiunea cererii este mare (\fIbuflen\fP\ >\ 256), apelul fie reușește, returnând un tampon parțial umplut, fie eșuează cu eroarea \fBEINTR\fP. Dacă fondul de entropie a fost inițializat și dimensiunea cererii este mică (\fIbuflen\fP\ <=\ 256), atunci \fBgetrandom\fP() nu va eșua cu \fBEINTR\fP. În schimb, va returna toți octeții care au fost solicitați. .P La citirea din sursa \fIrandom\fP, cererile de blocare de orice dimensiune pot fi întrerupte de un gestionar de semnal (apelul eșuează cu eroarea \fBEINTR\fP). .P Utilizarea \fBgetrandom\fP() pentru a citi tampoane mici (<=\ 256 bytes) din sursa \fIurandom\fP este modul preferat de utilizare. .P Tratamentul special al valorilor mici ale \fIbuflen\fP a fost conceput pentru compatibilitate cu \fBgetentropy\fP(3) de la OpenBSD, care este în prezent acceptat de glibc. .P Utilizatorul aplicației \fBgetrandom\fP() \fItrebuie\fP să verifice întotdeauna valoarea returnată, pentru a determina dacă s\-a produs o eroare sau dacă s\-au returnat mai puțini octeți decât s\-a solicitat. În cazul în care \fBGRND_RANDOM\fP nu este specificat și \fIbuflen\fP este mai mic sau egal cu 256, o returnare de mai puțini octeți decât s\-a solicitat nu ar trebui să se întâmple niciodată, dar programatorul atent va verifica acest lucru oricum! .SH ERORI .\" FIXME patch proposed https://lkml.org/lkml/2014/11/29/16 Începând cu Linux 3.19, există următoarea eroare: .IP \[bu] 3 În funcție de sarcina CPU, \fBgetrandom\fP() nu reacționează la întreruperi înainte de a citi toți octeții solicitați. .SH "CONSULTAȚI ȘI" \fBgetentropy\fP(3), \fBrandom\fP(4), \fBurandom\fP(4), \fBrandom\fP(7), \fBsignal\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .