random_r(3) - wariua/manpages-ko GitHub Wiki
random_r, srandom_r, initstate_r, setstate_r - μ¬μ§μ κ°λ₯ν λμ μμ±κΈ°
#include <stdlib.h>
int random_r(struct random_data *buf, int32_t *result);
int srandom_r(unsigned int seed, struct random_data *buf);
int initstate_r(unsigned int seed, char *statebuf,
size_t statelen, struct random_data *buf);
int setstate_r(char *statebuf, struct random_data *buf);glibc κΈ°λ₯ νμΈ λ§€ν¬λ‘ μ건 (feature_test_macros(7) μ°Έκ³ ):
-
random_r(),srandom_r(),initstate_r(),setstate_r(): -
/* glibc 2.19λΆν°: */ _DEFAULT_SOURCE
|| /* glibc λ²μ <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
μ΄ ν¨μλ€μ random(3)μμ κΈ°μ νλ ν¨μλ€μ μ¬μ§μ κ°λ₯ λ²μ μ΄λ€. κ° μ€λ λμμ λ 립μ μ΄κ³ μ¬μ° κ°λ₯ν λμ μ΄μ μ»μ΄μΌ νλ λ€μ€ μ€λ λ νλ‘κ·Έλ¨μμ μ°κΈ°μ μ ν©νλ€.
random_r() ν¨μλ random(3)κ³Ό μ μ¬νλ μ μ λ³μλ‘ μ μ§νλ μν μ 보λ₯Ό μ¬μ©νλ κ²μ΄ μλλΌ bufκ° κ°λ¦¬ν€λ μΈμμ μλ μν μ 보λ₯Ό μ¬μ©νλ€. bufλ initstate_r()λ‘ λ―Έλ¦¬ μ΄κΈ°ν λμ΄ μμ΄μΌ νλ€. μμ±ν λμλ₯Ό μΈμ resultλ‘ λ°ννλ€.
srandom_r() ν¨μλ srandom(3)κ³Ό μ μ¬νλ μ μ μν λ³μμ μ°κ³λ μλκ° μλλΌ bufκ° κ°λ¦¬ν€λ κ°μ²΄μ μνλ₯Ό μ μ§νλ λμ μμ±κΈ°μ μλλ₯Ό μ΄κΈ°ν νλ€. bufλ initstate_r()λ‘ λ―Έλ¦¬ μ΄κΈ°ν λμ΄ μμ΄μΌ νλ€.
initstate_r() ν¨μλ initstate(3)μ μ μ¬νλ μ μ μν λ³μλ₯Ό μ΄κΈ°ν νλ κ²μ΄ μλλΌ bufκ° κ°λ¦¬ν€λ κ°μ²΄ λ΄μ μνλ₯Ό μ΄κΈ°ν νλ€. μ΄ ν¨μλ₯Ό νΈμΆνκΈ° μ μ buf.state νλλ₯Ό NULLλ‘ μ΄κΈ°ν ν΄μΌ νλ€. initstate_r() ν¨μλ statebuf μΈμμ λν ν¬μΈν°λ₯Ό bufκ° κ°λ¦¬ν€λ ꡬ쑰체 λ΄μ μ μ₯νλ€. κ·Έλμ bufλ₯Ό μ¬μ©νλ λμμ statebuf ν λΉμ ν΄μ ν΄μλ μ λλ€. (λ°λΌμ λ³΄ν΅ statebufλ₯Ό μ μ λ³μλ‘ ν λΉνκ±°λ malloc(3) λ±μ μ¨μ νμ ν λΉν΄μΌ νλ€.)
setstate_r() ν¨μλ setstate(3)κ³Ό μ μ¬νλ μ μ μν λ³μλ₯Ό λ³κ²½νλ κ²μ΄ μλλΌ bufκ° κ°λ¦¬ν€λ κ°μ²΄ λ΄μ μνλ₯Ό λ³κ²½νλ€. stateλ initstate_r()μ μ΄μ©ν΄ λ¨Όμ μ΄κΈ°ν ν κ²μ΄κ±°λ μ΄μ setstate_r() νΈμΆμ κ²°κ³Όμ¬μΌ νλ€.
μ΄ ν¨μλ€μ λͺ¨λ μ±κ³΅ μ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° μ€λ₯ μμΈμ λνλ΄λλ‘ errnoλ₯Ό μ€μ νλ€.
EINVAL-
initstate_r()μ 8λ°μ΄νΈλ³΄λ€ μμ μν λ°°μ΄μ μ§μ νλ€. EINVAL-
setstate_r()μ λνstatebufμΈμλbufμΈμκ° NULLμ΄μλ€. EINVAL-
random_r()μ λνbufμΈμλresultμΈμκ° NULLμ΄μλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
| μΈν°νμ΄μ€ | μμ± | κ° |
|---|---|---|
random_r(), srandom_r(),initstate_r(), setstate_r()
|
μ€λ λ μμ μ± | MT-Safe race:buf |
μ΄ ν¨μλ€μ λΉνμ€ glibc νμ₯μ΄λ€.
initstate_r() μΈν°νμ΄μ€κ° νΌλμ€λ½λ€. random_data νμ
μ λΆν¬λͺ
ν κ²μΌλ‘ νλ €λ κ² κ°μλ° κ΅¬νμμλ μ¬μ©μκ° νΈμΆ μ μ buf.state νλλ₯Ό NULLλ‘ μ΄κΈ°ν νκ±°λ ꡬ쑰체 μ 체λ₯Ό 0μΌλ‘ μ±μ°κΈ°λ₯Ό μꡬνλ€.
drand48(3), rand(3), random(3)
2017-09-15