Linux repositories inspector

getentropy(3) - Russkiy

Linux
2017-09-15

man-pages-ru

Russian man pages from the Linux Documentation Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

ИМЯ

getentropy - заполнение буфера случайными байтами

ОБЗОР

#include <unistd.h>
int getentropy(void *buffer, size_t length);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
getentropy():

_DEFAULT_SOURCE

ОПИСАНИЕ

Функция getentropy() записывает length байт высококачественных случайных данных в буфер, начинающийся в области, указанной в buffer. Максимально разрешенное значение аргумента length равно 256.
Успешный вызов getentropy() всегда предоставляет затребованное число байт энтропии.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

В случае успеха функция возвращает 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

EFAULT Часть или весь буфер, указанный в buffer и length, не является валидной адресуемой памятью.
EIO Значение length больше 256.
EIO При попытке перезаписать buffer случайными данными произошла ошибка.
ENOSYS Данная версия ядра не имеет реализации системного вызова getrandom(2), необходимого для реализации данной функции.

ВЕРСИИ

Функция getentropy() впервые появилась в glibc 2.25.

СООТВЕТСТВИЕ СТАНДАРТАМ

Эта функция является нестандартной. Она также присутствует в OpenBSD.

ЗАМЕЧАНИЯ

Функция getentropy() реализована через вызов getrandom(2).
Следует учитывать, что в glibc обертка делает getrandom(2) точкой отмены, а точкой отмены getentropy() не является.
Функция getentropy() также объявлена в <sys/random.h> (для получения этого объявления из заголовочного файла макроса тестирования свойств не требуется).
Вызов getentropy() может блокировать работу, если система только что загрузилась и ядро ещё не успело набрать достаточно случайных событий для инициализации пула энтропии. В этом случае getentropy() продолжает блокировать работу даже при обработке сигнала и вернёт управление только после завершения инициализации пула энтропии.

СМОТРИТЕ ТАКЖЕ

getrandom(2), urandom(4), random(7)

REFERENCED BY

⇧ Top