# gethostid

## NAME



           gethostid, sethostid - get or set the unique identifier of the
           current host
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <unistd.h>**
    
           **long gethostid(void);**
           **int sethostid(long** _hostid_**);**
    
       Feature Test Macro Requirements for glibc (see
       feature_test_macros(7)):
    
           **gethostid**():
               Since glibc 2.20:
                   _DEFAULT_SOURCE || _XOPEN_SOURCE >= 500
               Up to and including glibc 2.19:
                   _BSD_SOURCE || _XOPEN_SOURCE >= 500
    
           **sethostid**():
               Since glibc 2.21:
                   _DEFAULT_SOURCE
               In glibc 2.19 and 2.20:
                   _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
               Up to and including glibc 2.19:
                   _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
    


## DESCRIPTION



           **gethostid**() and **sethostid**() respectively get or set a unique
           32-bit identifier for the current machine.  The 32-bit identifier
           was intended to be unique among all UNIX systems in existence.
           This normally resembles the Internet address for the local
           machine, as returned by gethostbyname(3), and thus usually never
           needs to be set.
    
           The **sethostid**() call is restricted to the superuser.
    


## RETURN VALUE



           **gethostid**() returns the 32-bit identifier for the current host as
           set by **sethostid**().
    
           On success, **sethostid**() returns 0; on error, -1 is returned, and
           _errno_ is set to indicate the error.
    


## ERRORS



           **sethostid**() can fail with the following errors:
    
           **EACCES** The caller did not have permission to write to the file
                  used to store the host ID.
    
           **EPERM** The calling process's effective user or group ID is not the
                  same as its corresponding real ID.
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌─────────────┬───────────────┬──────────────────────────────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├─────────────┼───────────────┼──────────────────────────────────┤
           │ **gethostid**() │ Thread safety │ MT-Safe hostid env locale        │
           ├─────────────┼───────────────┼──────────────────────────────────┤
           │ **sethostid**() │ Thread safety │ MT-Unsafe const:hostid           │
           └─────────────┴───────────────┴──────────────────────────────────┘
    


## VERSIONS



           In the glibc implementation, the _hostid_ is stored in the file
           _/etc/hostid_.  (Before glibc 2.2, the file _/var/adm/hostid_ was
           used.)
    
           In the glibc implementation, if **gethostid**() cannot open the file
           containing the host ID, then it obtains the hostname using
           gethostname(2), passes that hostname to gethostbyname_r(3) in
           order to obtain the host's IPv4 address, and returns a value
           obtained by bit-twiddling the IPv4 address.  (This value may not
           be unique.)
    


## STANDARDS



           **gethostid**()
                  POSIX.1-2008.
    
           **sethostid**()
                  None.
    


## BUGS



           It is impossible to ensure that the identifier is globally unique.
    


* * *