These functions are used to access or to change the host name of the current processor. Note, that on the Internet each interface has a at least one address, and names are associated with addresses, so a machine may (and usually does) have multiple names. gethostname(2) will return the one that the machine identifies itself as.
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
SVr4, 4.4BSD (this function first appeared in 4.2BSD). POSIX.1 does not define these functions, but ISO/IEC 9945-1:1990 mentions them in B.4.4.1.
According to the SUSv2, gethostname(2) must return len bytes (a truncated hostname, NUL-terminated or not) when the hostname is longer. Linux/Alpha (which has a system call gethostname(2)) complies with this requirement, but libc and glibc on Linux/i386 only return an error in this case.
The definition of success varies. SUSv2 defines gethostname() as `return possibly truncated hostname', and having a small len does not cause an error return. Of course it must be possible to be certain that one has obtained the full hostname, and to this end SUSv2 guarantees that `Host names are limited to 255 bytes'.