table of contents
gethostname(2) | System Calls Manual | gethostname(2) |
NOME¶
gethostname, sethostname - obtém/define o nome da máquina
BIBLIOTECA¶
Biblioteca C Padrão (libc, -lc)
SINOPSE¶
#include <unistd.h>
int gethostname(char *nome, size_t comp); int sethostname(const char *nome, size_t comp);
gethostname():
_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
|| /* glibc 2.19 and earlier */ _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¶
- EFAULT
- name é um endereço inválido.
- EINVAL
- len é negativo ou, para sethostname(), len é maior que o tamanho permitido.
- ENAMETOOLONG
- (glibc gethostname()) len is smaller than the actual size. (Before glibc 2.1, glibc uses EINVAL for this case.)
- EPERM
- 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)).
VERSÕES¶
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.
PADRÕES¶
- gethostname()
- POSIX.1-2008.
- sethostname()
- None.
HISTÓRICO¶
SVr4, 4.4BSD (esta função apareceu primeiramente no 4.2BSD). POSIX.1-2001 e POSIX.1-2008 especifica gethostname(), mas não sethostname().
Versions of glibc before glibc 2.2 handle the case where the length of the nodename was greater than or equal to len differently: nothing is copied into name and the function returns -1 with errno set to ENAMETOOLONG.
VEJA TAMBÉM¶
hostname(1), getdomainname(2), setdomainname(2), uname(2), uts_namespaces(7)
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.
2 maio 2024 | Linux man-pages (unreleased) |