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