Unix_Linux 的 gethostname
gethostname, sethostname -获取/设置主机名
内容简介
#include
int gethostname(char *name, size_tlen);
int sethostname(const char *name, size_tlen);
描述
These system calls are used to access or to change the host name of the current processor. Thegethostname() system call returns a null-terminated hostname (set earlier bysethostname()) in the arraynamethat has a length oflenbytes. 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.
返回值
On success, zero is returned. On error, -1 is returned, anderrnois set appropriately.
错误
标签
描述
EFAULT
name is an invalid address.
EINVAL
len is negative or, for sethostname(), len is larger than the maximum allowed size, or, for gethostname() on Linux/i386, lenis smaller than the actual size. (In this last case glibc 2.1 uses ENAMETOOLONG.)
EPERM
For sethostname(), the caller did not have theCAP_SYS_ADMIN capability.
遵循于
SVr4, 4.4BSD (this interfaces first appeared in 4.2BSD). POSIX.1-2001 specifiesgethostname() but notsethostname().
注意
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’.
glibc注意事项
The GNU C library implementsgethostname() as a library function that callsuname(2) and copies up tolenbytes from the returnednodenamefield intoname. Having performed the copy, the function then checks if the length of thenodenamewas greater than or equal tolen, and if it is, then the function returns -1 witherrnoset toENAMETOOLONG. Versions of glibc before 2.2 handle the case where the length of thenodenamewas greater than or equal tolendifferently: nothing is copied intonameand the function returns -1 witherrnoset toENAMETOOLONG.
另请参阅