gethostname

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