---
name: "gethostid"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/gethostid/3"
---

# gethostid(3)

get or set the unique identifier of the current host

## 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)](/feature_test_macros/7.md)):

**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)](/gethostbyname/3.md), 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)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **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)](/gethostname/2.md), passes that hostname to [**gethostbyname\_r**(3)](/gethostbyname_r/3.md) 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.

## HISTORY

4\.2BSD; dropped in 4.4BSD. SVr4 and POSIX.1-2001 include **gethostid**() but not **sethostid**().

## BUGS

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

## SEE ALSO

[**hostid**(1)](/hostid/1.md), [**gethostbyname**(3)](/gethostbyname/3.md)
