NAME
gethostname, sethostname - get/set host name
SYNOPSIS
#include <unistd.h>
I int gethostname(char * name , size_t len );
I int sethostname(const char * name , size_t len );
DESCRIPTION
These system calls are used to access or to change the host name of the
current processor.
The
R gethostname ()
system call returns a null-terminated hostname (set earlier by
R sethostname ())
in the array name that has a length of len bytes.
In case the null-terminated hostname does not fit, no error is
returned, but the hostname is truncated.
It is unspecified
whether the truncated hostname will be null-terminated.
RETURN VALUE
On success, zero is returned.
On error, -1 is returned, and
errno
is set appropriately.
ERRORS
EFAULT
name
is an invalid address.
EINVAL
len
is negative or, for
R sethostname (),
len
is larger than the maximum allowed size,
or, for
R gethostname ()
on Linux/i386,
len
is smaller than the actual size.
(In this last case glibc 2.1 uses
R ENAMETOOLONG .)
EPERM
For
R sethostname (),
the caller did not have the
CAP_SYS_ADMIN
capability.
CONFORMING TO
SVr4, 4.4BSD (these interfaces first appeared in 4.2BSD).
POSIX.1-2001 specifies
R gethostname ()
but not
R sethostname ().
NOTES
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
R HOST_NAME_MAX
bytes'.
Glibc Notes
The GNU C library implements
R gethostname ()
as a library function that calls
uname(2)
and copies up to
len
bytes from the returned
nodename
field into
R name .
Having performed the copy, the function then checks if the length of the
nodename
was greater than or equal to
R len ,
and if it is, then the function returns -1 with
errno
set to
R ENAMETOOLONG .
Versions of glibc before 2.2
handle the case where the length of the
nodename
was greater than or equal to
R len
differently: nothing is copied into
name
and the function returns -1 with
errno
set to
R ENAMETOOLONG .
SEE ALSO