> Linux Reviews > man >

gethostname


  1. gethostname.2.man


1. gethostname.2.man

Manpage of GETHOSTNAME

GETHOSTNAME

Section: Руководство программиста Linux (2)
Updated: 2010-09-20
Index Return to Main Contents
 

ИМЯ

gethostname, sethostname - получить/установить имя узла  

ОБЗОР

#include <unistd.h>

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

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

gethostname():

Начиная с glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >=200112L
До glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500

sethostname():
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
 

ОПИСАНИЕ

Эти системные вызовы используются для доступа или изменения имени узла текущего процессора.

Вызов sethostname() устанавливает имя узла равны значению, указанному в массиве символов name. Аргумент len определяет количество байт в name. (Таким образом, name не требует наличия завершающего байта с null.)

gethostname() возвращает имя узла с null на конце в массиве символов name длиной len байт. Если имя узла, оканчивающееся null, не помещается, то имя обрезается и ошибки не происходит (но см. ЗАМЕЧАНИЯ далее). В POSIX.1-2001 сказано, что если обрезание произошло, то неясно, будет ли буфер содержать завершающий байт с null.  

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.  

ОШИБКИ

EFAULT
name является неправильным адресом.
EINVAL
len имеет отрицательное значение или для sethostname() длина len больше, чем максимально допустимое значение.
ENAMETOOLONG
(gethostname() из glibc) len меньше чем реальный размер. (До версии 2.1, glibc возвращала в этом случае EINVAL.)
EPERM
Для работы с sethostname() у вызывающего нет мандата CAP_SYS_ADMIN.
 

СООТВЕТСТВИЕ СТАНДАРТАМ

SVr4, 4.4BSD (данная функция впервые появилась в 4.2BSD). POSIX.1-2001 определяет gethostname(), но не sethostname().  

ЗАМЕЧАНИЯ

SUSv2 гарантирует, что "Длина имени узла ограничивается 255-ми байтами". POSIX.1-2001 гарантирует, что "Длина имени узла (не включая завершающий нулевой символ) ограничивается HOST_NAME_MAX байтами". В Linux, значение HOST_NAME_MAX равно 64, которое было урезано начиная с Linux 1.0 (ранние версии имели предел в 8 байт).  

Замечания по glibc

Библиотека GNU C library не использует системный вызов gethostname(); вместо этого gethostname() в ней реализован в виде библиотечной функции, которая вызывает uname(2) и копирует до len байт в name из возвращаемого поля nodename. Выполнив копирование, функция проверяет, что длина nodename не больше или равна len, и если это обнаруживается, то функция возвращает -1, устанавливая значение errno равным ENAMETOOLONG; в этом случае в возвращаемое значение name завершающий null не добавляется.

Версии glibc до 2.2 обрабатывали случай превышения длины nodename по другому: ничего не копировалось в name и функция возвращала -1, устанавливая errno равным ENAMETOOLONG.  

СМОТРИТЕ ТАКЖЕ

getdomainname(2), setdomainname(2), uname(2)


 

Index

ИМЯ
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СООТВЕТСТВИЕ СТАНДАРТАМ
ЗАМЕЧАНИЯ
Замечания по glibc
СМОТРИТЕ ТАКЖЕ

This document was created by man2html using the manual pages.
Time: 17:41:19 GMT, October 23, 2013

SVENSKA - SVENSKA - SVENSKA - SVENSKA - ja - nl - pl