Scroll to navigation

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);

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 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

name é um endereço inválido.
len é negativo ou, para sethostname(), len é maior que o tamanho permitido.
(glibc gethostname()) len is smaller than the actual size. (Before glibc 2.1, glibc uses EINVAL for this case.)
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

POSIX.1-2008.
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)