Voltar à lista
Linux x86_64Sistema & diversos#318

getrandom

Obtém bytes aleatórios de qualidade criptográfica do gerador do kernel.

Descrição

Forma moderna e recomendada de obter aleatoriedade segura, substituindo o padrão antigo de abrir e ler de `/dev/urandom` — evita o custo de abrir um descritor de arquivo e funciona corretamente mesmo em ambientes com sistema de arquivos restrito (ex.: chroot/sandbox sem /dev).

Header: sys/random.hman 2Desde o kernel 3.17

Nota

Sem GRND_RANDOM (comportamento padrão), bloqueia apenas até o gerador ser inicializado uma vez no boot — depois disso nunca mais bloqueia, diferente do antigo /dev/random.

Assinatura

ssize_t getrandom(void * buf, size_t buflen, unsigned int flags);

Parâmetros

ParâmetroTipoDescrição
bufvoid *Buffer de destino para os bytes aleatórios.
buflensize_tNúmero de bytes desejado.
flagsunsigned intGRND_RANDOM, GRND_NONBLOCK, GRND_INSECURE.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1bufvoid *
rsiargumento 2buflensize_t
rdxargumento 3flagsunsigned int

Valor de retorno

Número de bytes efetivamente escritos em `buf` em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
EINTR(4)
Chamada interrompida por um sinal.
EINVAL(22)
Argumento inválido.
ENOSYS(38)
Chamada de sistema não implementada nesta versão do kernel.

Relacionadas