FreeBSD Manual Pages
GETRANDOM(2) System Calls Manual GETRANDOM(2) NAME getrandom -- get random data LIBRARY Standard C Library (libc, -lc) SYNOPSIS #include <sys/random.h> ssize_t getrandom(void *buf, size_t buflen, unsigned int flags); DESCRIPTION getrandom() fills buf with up to buflen bytes of random data. The flags argument may include zero or more of the following: `GRND_NONBLOCK' Return EAGAIN instead of blocking, if the random(4) device has not yet been seeded. By default, getrandom() will block until the device is seeded. `GRND_RANDOM' This flag does nothing on FreeBSD. /dev/random and /dev/urandom are identical. `GRND_INSECURE' This flag is treated as an alternative name for GRND_NONBLOCK. It is provided solely for API compatibil- ity with Linux. If the random(4) device has been seeded, reads of up to 256 bytes will al- ways return as many bytes as requested and will not be interrupted by sig- nals. RETURN VALUES Upon successful completion, the number of bytes which were actually read is returned. For requests larger than 256 bytes, this can be fewer bytes than were requested. Otherwise, -1 is returned and the global variable errno is set to indicate the error. ERRORS The getrandom() operation returns the following errors: [EAGAIN] The `GRND_NONBLOCK' (or `GRND_INSECURE') flag was set and the random(4) device was not yet seeded. [EFAULT] The buf parameter points to an invalid address. [EINTR] The sleep was interrupted by a signal. [EINVAL] An invalid flags was specified. [EINVAL] The requested buflen was larger than IOSIZE_MAX. SEE ALSO arc4random(3), getentropy(3), random(4) STANDARDS getrandom() is non-standard. It is present in Linux. HISTORY The getrandom() system call first appeared in FreeBSD 12.0. CAVEATS Unlike Linux, the GRND_INSECURE flag on FreeBSD does not produce any output before the random(4) device is seeded. FreeBSD ports 15.quarterly January 12, 2020 GETRANDOM(2)
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY | CAVEATS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=getrandom&sektion=2&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>
