random_r(3) - wariua/manpages-ko GitHub Wiki

NAME

random_r, srandom_r, initstate_r, setstate_r - μž¬μ§„μž… κ°€λŠ₯ν•œ λ‚œμˆ˜ 생성기

SYNOPSIS

#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

DESCRIPTION

이 ν•¨μˆ˜λ“€μ€ 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() 호좜의 κ²°κ³Όμ—¬μ•Ό ν•œλ‹€.

RETURN VALUE

이 ν•¨μˆ˜λ“€μ€ λͺ¨λ‘ 성곡 μ‹œ 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° 였λ₯˜ 원인을 λ‚˜νƒ€λ‚΄λ„λ‘ errnoλ₯Ό μ„€μ •ν•œλ‹€.

ERRORS

EINVAL
initstate_r()에 8λ°”μ΄νŠΈλ³΄λ‹€ μž‘μ€ μƒνƒœ 배열을 μ§€μ •ν–ˆλ‹€.
EINVAL
setstate_r()에 λŒ€ν•œ statebuf μΈμžλ‚˜ buf μΈμžκ°€ NULLμ΄μ—ˆλ‹€.
EINVAL
random_r()에 λŒ€ν•œ buf μΈμžλ‚˜ result μΈμžκ°€ NULLμ΄μ—ˆλ‹€.

ATTRIBUTES

이 μ ˆμ—μ„œ μ‚¬μš©ν•˜λŠ” μš©μ–΄λ“€μ— λŒ€ν•œ μ„€λͺ…은 attributes(7)λ₯Ό 보라.

μΈν„°νŽ˜μ΄μŠ€ 속성 κ°’
random_r(), srandom_r(),
initstate_r(), setstate_r()
μŠ€λ ˆλ“œ μ•ˆμ „μ„± MT-Safe race:buf

CONFORMING TO

이 ν•¨μˆ˜λ“€μ€ λΉ„ν‘œμ€€ glibc ν™•μž₯이닀.

BUGS

initstate_r() μΈν„°νŽ˜μ΄μŠ€κ°€ ν˜Όλž€μŠ€λŸ½λ‹€. random_data νƒ€μž…μ„ 뢈투λͺ…ν•œ κ²ƒμœΌλ‘œ ν•˜λ €λŠ” 것 같은데 κ΅¬ν˜„μ—μ„œλŠ” μ‚¬μš©μžκ°€ 호좜 전에 buf.state ν•„λ“œλ₯Ό NULL둜 μ΄ˆκΈ°ν™” ν•˜κ±°λ‚˜ ꡬ쑰체 전체λ₯Ό 0으둜 μ±„μš°κΈ°λ₯Ό μš”κ΅¬ν•œλ‹€.

SEE ALSO

drand48(3), rand(3), random(3)


2017-09-15

⚠️ **GitHub.com Fallback** ⚠️