GETENTROPY(3) | Руководство программиста Linux | GETENTROPY(3) |
getentropy - заполнение буфера случайными байтами
#include <unistd.h>
int getentropy(void *buffer, size_t length);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
getentropy():
Функция getentropy() записывает length байт высококачественных случайных данных в буфер, начинающийся в области, указанной в buffer. Максимально разрешенное значение аргумента length равно 256.
Успешный вызов getentropy() всегда предоставляет затребованное число байт энтропии.
В случае успеха функция возвращает 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.
Функция getentropy() впервые появилась в glibc 2.25.
Эта функция является нестандартной. Она также присутствует в OpenBSD.
Функция getentropy() реализована через вызов getrandom(2).
Следует учитывать, что в glibc обертка делает getrandom(2) точкой отмены, а точкой отмены getentropy() не является.
Функция getentropy() также объявлена в <sys/random.h> (для получения этого объявления из заголовочного файла макроса тестирования свойств не требуется).
Вызов getentropy() может блокировать работу, если система только что загрузилась и ядро ещё не успело набрать достаточно случайных событий для инициализации пула энтропии. В этом случае getentropy() продолжает блокировать работу даже при обработке сигнала и вернёт управление только после завершения инициализации пула энтропии.
2017-09-15 | Linux |