gethostname(2)

NUME
gethostname, sethostname - obține/stabilește numele gazdei

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <unistd.h>

int gethostname(char *name, size_t size);
int sethostname(const char *name, size_t size);

    Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

gethostname():
    _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
        || /* glibc 2.19 și versiunile anterioare */ _BSD_SOURCE

sethostname():
    Începând cu glibc 2.21:
        _DEFAULT_SOURCE
    În glibc 2.19 și 2.20:
        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
    Până la și inclusiv glibc 2.19:
        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

DESCRIERE
Aceste apeluri de sistem sunt utilizate pentru a accesa sau pentru a modifica numele de gazdă al sistemului. Mai exact, ele operează asupra numelui de gazdă asociat cu spațiul de nume UTS al procesului apelant.

sethostname() stabilește numele de gazdă la valoarea dată în matricea de caractere name. Argumentul size specifică numărul de octeți din name; (prin urmare, name nu necesită un octet de terminare nul).

gethostname() returnează numele de gazdă cu un octet de terminare nul în matricea de caractere name, care are o dimensiune de size octeți. În cazul în care numele de gazdă cu un octet de terminare nul este prea mare pentru a încăpea, numele este trunchiat și nu se returnează nicio eroare (a se vedea însă rubrica NOTE de mai jos). POSIX.1 precizează că, dacă are loc o astfel de trunchiere, nu se specifică dacă memoria tampon returnată include sau nu un octet de terminare nul.

VALOAREA RETURNATĂ
În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE

EFAULT
    name este o adresă nevalidă.

EINVAL
    argumentul size este negativ sau, pentru sethostname(), size este mai mare decât dimensiunea maximă permisă.

ENAMETOOLONG
    (glibc gethostname()) argumentul size este mai mic decât dimensiunea reală; (înainte de glibc 2.1, glibc utiliza EINVAL pentru acest caz).

EPERM
    Pentru sethostname(), apelantul nu avea capacitatea CAP_SYS_ADMIN în spațiul de nume de utilizator asociat cu spațiul său de nume UTS (a se vedea namespaces(7)).

VERSIUNI
SUSv2 garantează că „Numele de gazdă sunt limitate la 255 de octeți”. POSIX.1 garantează că „Numele gazdelor (fără a include octetul nul de terminare) sunt limitate la HOST_NAME_MAX octeți”. În Linux, HOST_NAME_MAX este definit cu valoarea 64, care a fost limita de la Linux 1.0 (nucleele anterioare au impus o limită de 8 octeți).

  Diferențe între biblioteca C și nucleu
Biblioteca GNU C nu utilizează apelul de sistem gethostname(); în schimb, implementează gethostname() ca o funcție de bibliotecă care apelează uname(2) și copiază până la size octeți din câmpul nodename returnat în name. După ce a efectuat copia, funcția verifică dacă lungimea câmpului nodename a fost mai mare sau egală cu size, iar dacă este așa, funcția returnează -1 cu errno stabilită la ENAMETOOLONG; în acest caz, un octet de terminare nul nu este inclus în câmpul nodename returnat.

STANDARDE

gethostname()
    POSIX.1-2024.

sethostname()
    Niciunul.

ISTORIC

gethostname()
    4.2BSD, SVr4, POSIX.1-2001.

sethostname()
    4.2BSD, SVr4.

Versiunile de glibc anterioare lui glibc 2.2 tratează diferit cazul în care lungimea lui nodename a fost mai mare sau egală cu size: nu se copiază nimic în name și funcția returnează -1 cu errno stabilită la ENAMETOOLONG.

CONSULTAȚI ȘI
hostname(1), getdomainname(2), setdomainname(2), uname(2), uts_namespaces(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.