Scroll to navigation

GETHOSTNAME(2) Manual do Programador do Linux GETHOSTNAME(2)

NOME

gethostname, sethostname - obtém/define o nome da máquina

SINOPSE

#include <unistd.h>
int gethostname(char *nome, size_t comp);
int sethostname(const char *nome, size_t comp);

Requisitos de macro de teste de recursos para o glibc (consulte feature_test_macros(7)):

gethostname():


_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
|| /* Glibc 2.19 e anteriores */ _BSD_SOURCE

sethostname():


Desde o glibc 2.21:
_DEFAULT_SOURCE
No glibc 2.19 e 2.20:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Até e incluindo o glibc 2.19:
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

DESCRIÇÃO

Estas chamadas de sistema são usadas para acessar ou alterar o nome da máquina do processador atual. Mais precisamente, elas operam no nome de máquina associado com o espaço de nomes de UTS do processo chamador.

sethostname() define o nome de máquina com o valor fornecido na matriz de caracteres name. O argumento len especifica o número de bytes em name. (Portanto, name não requer um byte nulo final.)

gethostname() retorna o nome da máquina terminado em nulo no vetor de caracteres name, que possui um comprimento de len bytes. Se o nome da máquina terminado em nulo for muito grande para caber, o nome será truncado e nenhum erro será retornado (mas consulte as NOTAS abaixo). O POSIX.1 diz que, se esse truncamento ocorrer, não será especificado se o buffer retornado inclui um byte nulo final.

VALOR DE RETORNO

Em caso de sucesso, zero é retornado. Em caso de erro, -1 é retornado, e errno é definido para indicar o erro.

ERROS

name é um endereço inválido.
len é negativo ou, para sethostname(), len é maior que o tamanho permitido.
(glibc gethostname()) len é menor que o tamanho real. (Antes da versão 2.1, glibc usa EINVAL para este caso.)
Para sethostname(), o chamador não tinha a capacidade CAP_SYS_ADMIN no espaço de nomes de usuário associado ao seu espaço de nomes UTS (consulte namespaces(7)).

DE ACORDO COM

SVr4, 4.4BSD (esta função apareceu primeiramente no 4.2BSD). POSIX.1-2001 e POSIX.1-2008 especifica gethostname(), mas não sethostname().

NOTAS

O SUSv2 garante que "Os nomes de máquina estão limitados a 255 bytes". O POSIX.1 garante que "Os nomes de máquina (não incluindo o byte nulo final) são limitados a HOST_NAME_MAX bytes". No Linux, HOST_NAME_MAX é definido com o valor 64, que tem sido o limite desde o Linux 1.0 (os kernels anteriores impuseram um limite de 8 bytes).

Diferenças entre kernel/biblioteca C

A biblioteca GNU C não emprega a chamada de sistema gethostname(); em vez disso, implementa gethostname() como uma função de biblioteca que chama uname(2) e copia até len bytes do campo nodename retornado em name. Depois de executar a cópia, a função verifica se o comprimento de nodename foi maior ou igual a len e, se for, então a função retorna -1 com errno definido como ENAMETOOLONG ; nesse caso, um byte nulo final não é incluído no name retornado.

As versões do glibc anteriores à 2.2 tratam do caso em que o comprimento de nodename era maior ou igual a len de maneira diferente: nada é copiado em name e a função retorna -1 com errno definido como ENAMETOOLONG.

VEJA TAMBÉM

hostname(1), getdomainname(2), setdomainname(2), uname(2), uts_namespaces(7)

COLOFÃO

Esta página faz parte da versão 5.13 do projeto Linux man-pages. Uma descrição do projeto, informações sobre relatórios de bugs e a versão mais recente desta página podem ser encontradas em https://www.kernel.org/doc/man-pages/.

TRADUÇÃO

A tradução para português brasileiro desta página man foi criada por André Luiz Fassone <lonely_wolf@ig.com.br>, Ricardo C.O.Freitas <english.quest@best-service.com> e Rafael Fontenelle <rafaelff@gnome.org>.

Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.

Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.

22 março 2021 Linux