random_r(3) Library Functions Manual random_r(3) NUME random_r, srandom_r, initstate_r, setstate_r - generator de numere aleatoare reentrante BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include int random_r(struct random_data *restrict buf, int32_t *restrict result); int srandom_r(unsigned int seed, struct random_data *buf); int initstate_r(unsigned int seed, char statebuf[restrict .statelen], size_t statelen, struct random_data *restrict buf); int setstate_r(char *restrict statebuf, struct random_data *restrict buf); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): random_r(), srandom_r(), initstate_r(), setstate_r(): /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE DESCRIERE Aceste funcii sunt echivalentele reentrante ale funciilor descrise in random(3). Ele sunt adecvate pentru utilizarea in programe cu mai multe fire de execuie, in care fiecare fir de execuie trebuie sa obina o secvena independenta i reproductibila de numere aleatoare. Funcia random_r() este ca i random(3), cu excepia faptului ca, in loc sa utilizeze informaiile de stare pastrate intr-o variabila globala, utilizeaza informaiile de stare din argumentul indicat de buf, care trebuie sa fi fost iniializat anterior de initstate_r(). Numarul aleatoriu generat este returnat in argumentul result. Funcia srandom_r() este la fel ca srandom(3), cu excepia faptului ca iniializeaza samana pentru generatorul de numere aleatoare a carui stare este meninuta in obiectul indicat de buf, care trebuie sa fi fost iniializat in prealabil de initstate_r(), in loc de samana asociata cu variabila de stare globala. Funcia initstate_r() este ca initstate(3), cu excepia faptului ca iniializeaza starea in obiectul indicat de buf, in loc sa iniializeze variabila de stare globala. Inainte de a apela aceasta funcie, campul buf.state trebuie iniializat la NULL. Funcia initstate_r() inregistreaza un indicator la argumentul statebuf in interiorul structurii indicate de buf. Astfel, statebuf nu trebuie sa fie eliberat atata timp cat buf este inca in uz; (aadar, statebuf ar trebui sa fie alocat de obicei ca o variabila statica sau sa fie alocat pe gramada cu ajutorul malloc(3) sau similar). Funcia setstate_r() este ca setstate(3), cu excepia faptului ca modifica starea din obiectul indicat de buf, in loc sa modifice variabila de stare globala. state trebuie mai intai sa fi fost iniializat cu initstate_r() sau sa fie rezultatul unui apel anterior al funciei setstate_r(). VALOAREA RETURNATA Toate aceste funcii returneaza 0 in caz de succes. In caz de eroare, se returneaza -1, cu errno configurata pentru a indica eroarea. ERORI-IEIRE EINVAL O matrice de stare mai mica de 8 octei a fost specificata la initstate_r(). EINVAL Argumentul statebuf sau buf la setstate_r() a fost NULL. EINVAL Argumentul buf sau result din random_r() a fost NULL. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +-----------------------------+---------------------+------------------+ |Interfaa | Atribut | Valoare | +-----------------------------+---------------------+------------------+ |random_r(), srandom_r(), | Sigurana firelor | MT-Safe race:buf | |initstate_r(), setstate_r() | | | +-----------------------------+---------------------+------------------+ STANDARDE GNU. ERORI Interfaa initstate_r() este confuza. Se pare ca tipul random_data este menit sa fie opac, dar implementarea cere utilizatorului fie sa iniializeze campul buf.state la NULL, fie sa elimine intreaga structura inainte de apel. CONSULTAI I drand48(3), rand(3), random(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 random_r(3)