home   contributing   bugs   download   online pages  

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | CONFORMING TO | NOTES | SEE ALSO | COLOPHON


GETHOSTNAME(2)                Linux Programmer's Manual                GETHOSTNAME(2)

NAME         top

       gethostname, sethostname - get/set hostname

SYNOPSIS         top

       #include <unistd.h>

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

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       gethostname(): _BSD_SOURCE || _XOPEN_SOURCE >= 500
       sethostname(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

DESCRIPTION         top

       These system calls are used to access or to change the hostname of the current
       processor.

       sethostname() sets the hostname to the value given in the character array
       name.  The len argument specifies the number of bytes in name.  (Thus, name
       does not require a terminating null byte.)

       gethostname() returns the null-terminated hostname in the character array
       name, which has a length of len bytes.  If the null-terminated hostname is too
       large to fit, then the name is truncated, and no error is returned (but see
       NOTES below).  POSIX.1-2001 says that if such truncation occurs, then it is
       unspecified whether the returned buffer includes a terminating null byte.

RETURN VALUE         top

       On success, zero is returned.  On error, -1 is returned, and errno is set
       appropriately.

ERRORS         top

       EFAULT name is an invalid address.

       EINVAL len is negative or, for sethostname(), len is larger than the maximum
              allowed size.

       ENAMETOOLONG
              (glibc gethostname()) len is smaller than the actual size.  (Before
              version 2.1, glibc uses EINVAL for this case.)

       EPERM  For sethostname(), the caller did not have the CAP_SYS_ADMIN
              capability.

CONFORMING TO         top

       SVr4, 4.4BSD  (these interfaces first appeared in 4.2BSD).  POSIX.1-2001
       specifies gethostname() but not sethostname().

NOTES         top

       SUSv2 guarantees that "Host names are limited to 255 bytes".  POSIX.1-2001
       guarantees that "Host names (not including the terminating null byte) are
       limited to HOST_NAME_MAX bytes".  On Linux, HOST_NAME_MAX is defined with the
       value 64, which has been the limit since Linux 1.0 (earlier kernels imposed a
       limit of 8 bytes).

Glibc Notes

       The GNU C library does not employ the gethostname() system call; instead, it
       implements gethostname() as a library function that calls uname(2) and copies
       up to len bytes from the returned nodename field into name.  Having performed
       the copy, the function then checks if the length of the nodename was greater
       than or equal to len, and if it is, then the function returns -1 with errno
       set to ENAMETOOLONG; in this case, no null-terminator is included in the
       returned name.

       Versions of glibc before 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.

SEE ALSO         top

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

COLOPHON         top

       This page is part of release 3.23 of the Linux man-pages project.  A
       description of the project, and information about reporting bugs, can be found
       at http://www.kernel.org/doc/man-pages/.

Linux                                 2008-11-27                       GETHOSTNAME(2)