| Rev | Author | # | Line |
|---|---|---|---|
| 1 | perry | 1 | !!NAME |
| 2 | |||
| 2 | PerryLorier | 3 | gethostname - get host name |
| 1 | perry | 4 | !!SYNOPSIS |
| 2 | PerryLorier | 5 | __#include <unistd.h>__ |
| 6 | __int gethostname(char *__''name''__, size_t__ ''len''__);__ | ||
| 1 | perry | 7 | |
| 8 | !!DESCRIPTION | ||
| 2 | PerryLorier | 9 | 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. |
| 1 | perry | 10 | |
| 11 | !!RETURN VALUE | ||
| 2 | PerryLorier | 12 | On success, zero is returned. On error, -1 is returned, and ''errno'' is set appropriately. |
| 1 | perry | 13 | |
| 14 | !!ERRORS | ||
| 6 | PerryLorier | 15 | ;[EINVAL]: ''len'' is negative or, on Linux/i386, ''len'' is smaller than the actual size. (In this last case glibc 2.1 uses [ENAMETOOLONG].) |
| 2 | PerryLorier | 16 | ;[EFAULT]: ''name'' is an invalid address. |
| 5 | PerryLorier | 17 | ;[ENAMETOOLONG]: ''len'' is smaller than the length of the hostname |
| 1 | perry | 18 | |
| 19 | !!CONFORMING TO | ||
| 2 | PerryLorier | 20 | 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. |
| 1 | perry | 21 | |
| 22 | !!BUGS | ||
| 2 | PerryLorier | 23 | 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. |
| 1 | perry | 24 | |
| 25 | !!NOTES | ||
| 2 | PerryLorier | 26 | 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 |
| 27 | SUSv2 guarantees that `Host names are limited to 255 bytes'. | ||
| 4 | PerryLorier | 28 | |
| 29 | !!EXAMPLE | ||
| 30 | #include <unistd.h> | ||
| 31 | #include <malloc.h> | ||
| 32 | #include <stdio.h> | ||
| 33 | #include <string.h> | ||
| 34 | |||
| 35 | int main(int argc,char **argv) | ||
| 36 | { | ||
| 37 | char domain[[256]; | ||
| 38 | int ret=gethostname(domain,sizeof(domain)); | ||
| 39 | if (ret==-1) { | ||
| 40 | perror("gethostname"); | ||
| 41 | return 1; | ||
| 42 | } | ||
| 43 | printf("%s\n",domain); | ||
| 44 | return 0; | ||
| 45 | } | ||
| 46 | |||
| 1 | perry | 47 | |
| 48 | !!SEE ALSO | ||
| 2 | PerryLorier | 49 | getdomainname(2), setdomainname(2), uname(2) |
lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 9 times)