getrandom(2) System Calls Manual getrandom(2) getrandom - LIBRARY Standard C library (libc, -lc) #include ssize_t getrandom(void buf[.buflen], size_t buflen, unsigned int flags); getrandom() , buf, buflen. . , getrandom() urandom (. ., /dev/urandom). flags. urandom , 256 , , . . , , EINTR. urandom , getrandom() , flags GRND_NONBLOCK. flags , : GRND_RANDOM , random (. ., /dev/urandom), urandom. random , . random buflen, . , GRND_NONBLOCK flags. GRND_NONBLOCK , random getrandom() , , urandom , . GRND_NONBLOCK, getrandom() , -1 errno EAGAIN. getrandom() buf . , buflen , flags GRND_RANDOM random, . -1, errno . EAGAIN , getrandom() , GRND_NONBLOCK. EFAULT , buf, . EINTR ; read(2) <<>> SA_RESTART signal(7). EINVAL flags . ENOSYS glibc getrandom() , . Linux. Linux 3.17, glibc 2.25. , , random(7). /dev/random /dev/urandom, getrandom() . , getrandom() , chroot(2) /dev (, ) , . Linux 3.19 : o When reading from the urandom source, a maximum of 32Mi-1 bytes is returned by a single call to getrandom() on systems where int has a size of 32 bits. o random 512 . urandom (GRND_RANDOM ), getrandom() , ( GRND_NONBLOCK). ( 256), getrandom() , buf. random ( GRND_RANDOM), getrandom() , - ( GRND_NONBLOCK). getrandom(), urandom, buflen. , EINTR. (buflen > 256), , , EINTR. (buflen <= 256), getrandom() EINTR. , . random ( EINTR). getrandom() (<= 256 ) urandom -- . buflen getentropy(3) OpenBSD, glibc. getrandom() , . GRND_RANDOM buflen 256, , ! Linux 3.19 : o , getrandom() , . . getentropy(3), random(4), urandom(4), random(7), signal(7) Azamat Hackimov , Dmitry Bolkhovskikh , Vladislav , Yuri Kozlov ; GNU 3 , . . , , . Linux man-pages 6.06 31 2023 . getrandom(2)