NAME

gethostid, sethostid - 현재 호스트의 고유 식별자를 얻거나 설정하기

SYNOPSIS

#include <unistd.h>

long gethostid(void);
int sethostid(long hostid);

glibc 기능 확인 매크로 요건 (feature_test_macros(7) 참고):

gethostid():
glibc 2.20부터:
_DEFAULT_SOURCE || _XOPEN_SOURCE >= 500
glibc 2.19까지:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
sethostid():
glibc 2.21부터:
_DEFAULT_SOURCE
glibc 2.19 및 2.20:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
glibc 2.19까지:
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

DESCRIPTION

gethostid()sethostid()는 현재 머신의 고유한 32비트 식별자를 얻거나 설정한다. 그 32비트 식별자가 존재하는 모든 유닉스 시스템 내에서 유일할 것으로 보았다. 보통 로컬 머신의 인터넷 주소를 따라가며, 그래서 대개는 설정해 줄 필요가 전혀 없다.

sethostid() 호출은 수퍼유저에게로 제한돼 있다.

RETURN VALUE

gethostid()sethostid()로 설정된 현재 호스트의 32비트 식별자를 반환한다.

sethostid()는 성공 시 0을 반환한다. 오류 시 -1을 반환하며 오류를 나타내도록 errno를 설정한다.

ERRORS

sethostid()가 다음 오류로 실패할 수 있다.

EACCES
호출자가 호스트 ID를 저장하는 데 사용하는 파일에 쓰기 권한을 가지고 있지 않다.
EPERM
호출 프로세스의 실효 사용자 ID나 그룹 ID가 대응하는 실제 ID와 같지 않다.

ATTRIBUTES

이 절에서 사용하는 용어들에 대한 설명은 attributes(7)를 보라.

인터페이스 속성
gethostid() 스레드 안전성 MT-Safe hostid env locale
sethostid() 스레드 안전성 MT-Unsafe const:hostid

CONFORMING TO

4.2BSD. 4.4BSD에서 이 함수들이 빠졌다. SVr4에 gethostid()는 포함되지만 sethostid()는 아니다.

POSIX.1-2001과 POSIX.1-2008에서 gethostid()는 명세하지만 sethostid()는 명세하지 않는다.

NOTES

glibc 구현에서는 파일 /etc/hostidhostid를 저장한다. (glibc 버전 2.2 전에서는 파일 /var/adm/hostid를 사용했다.)

glibc 구현에서 gethostid()가 호스트 ID를 담은 파일을 열 수 없는 경우에는 gethostname(2)으로 호스트명을 얻고 그 호스트명을 gethostbyname_r(3)에 줘서 호스트의 IPv4 주소를 얻고 그 IPv4 주소의 비트들을 좀 꼬아서 얻은 값을 반환한다. (이 값은 유일하지 않을 수도 있다.)

BUGS

식별자가 전세계적으로 유일하도록 하는 게 불가능하다.

SEE ALSO

hostid(1), gethostbyname(3)


2021-03-22