getentropy(3)

NAZWA
getentropy - wypełnia bufor losowymi bajtami

BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)

SKŁADNIA
#include <unistd.h>

int getentropy(size_t length;
               void buffer[length], size_t length);

    Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

getentropy():
    _DEFAULT_SOURCE

OPIS
Funkcja getentropy() zapisuje liczbę length bajtów losowych danych o wysokiej jakości do bufora, zaczynającego się w położeniu, na które wskazuje buffer. Maksymalną dozwoloną wartością argumentu length jest 256.

Pomyślne wywołanie do getentropy() zawsze zwraca żądaną liczbę bajtów entropii.

WARTOŚĆ ZWRACANA
W przypadku powodzenia funkcja ta zwraca zero. W razie wystąpienia błędu zwracane jest -1 i ustawiane errno, wskazując błąd.

BŁĘDY

EFAULT
    Część lub całość bufora określonego przez buffer i length nie jest prawidłowo adresowalną pamięcią.

EIO Argument length jest większy niż 256.

EIO Wystąpił nieokreślony błąd podczas próby nadpisania bufora buffer losowymi danymi.

ENOSYS
    Bieżąca wersja jądra nie implementuje wywołania systemowego getrandom(2), które jest wymagane do zaimplementowania tej funkcji.

STANDARDY
Brak.

HISTORIA
glibc 2.25. OpenBSD.

UWAGI
Funkcja getentropy() jest zaimplementowana za pomocą getrandom(2).

Tam gdzie opakowanie z glibc czyni getrandom(2) punktem anulowania, getentropy() nie jest punktem anulowania.

getentropy() jest deklarowane również w <sys/random.h> (do uzyskania deklaracji z tego pliku nagłówkowego nie jest potrzebne deklarowanie żadnego makra sprawdzania cech).

Wywołanie do getentropy() może blokować, jeśli system jest tuż po rozruchu i jądro nie zebrało jeszcze wystarczająco dużo losowości do zainicjowania puli entropii. W takim przypadku, getentropy() będzie utrzymywało blokowanie nawet wtedy, gdy obsługiwany jest sygnał i powróci jedynie po zainicjowaniu puli entropii.

ZOBACZ TAKŻE
getrandom(2), urandom(4), random(7)

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.