gethostid, sethostid − pobranie lub ustawienie unikatowego identyfikatora obecnej maszyny
#include <unistd.h>
long gethostid(void);
int sethostid(long hostid);
Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):
gethostid():
_BSD_SOURCE || _XOPEN_SOURCE >= 500
sethostid():
Od glibc 2.21:
_DEFAULT_SOURCE
W glibc 2.19 i 2.20:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Do glibc 2.19 włącznie:
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
gethostid() oraz sethostid odpowiednio pobiera lub ustawia unikatowy 32−bitowy identyfikator obecnej maszyny. 32−bitowy identyfikator powinien być niepowtarzalny wśród wszystkich istniejących systemów uniksowych. Normalnie jest to podobne do adresu internetowego lokalnej maszyny, zwracanego przez gethostbyname(3) i dlatego zwykle nie musi być ustawiane.
Wywołanie sethostid() jest zastrzeżone dla superużytkownika.
gethostid() zwraca 32−bitowy identyfikator obecnej maszyny, jaki został ustawiony przez sethostid().
W przypadku powodzenia sethostid() zwraca zero. W razie wystąpienia błędu zwracane jest −1 i ustawiana jest odpowiednia wartość zmiennej errno.
sethostid() może zawieść z powodu następujących błędów:
EACCES |
Proces wywołujący nie ma prawa zapisu do pliku używanego do przechowywania identyfikatora bieżącej maszyny. |
||
EPERM |
Efektywny identyfikator użytkownika lub grupy procesu wywołującego nie jest taki sam jak odpowiadający mu identyfikator rzeczywisty. |
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
4.2BSD. Funkcje te porzucono w 4.4BSD. SVr4 zawiera gethostid(), lecz brak tam sethostid().
POSIX.1−2001 i POSIX.1−2008 zawiera gethostid(), ale nie sethostid().
W implementacji biblioteki glibc hostid jest przechowywane w pliku /etc/hostid. (W wersjach glibc wcześniejszych niż 2.2 był używany plik /var/adm/hostid).
W implementacji glibc, jeśli gethostid() nie może otworzyć pliku zawierającego ID maszyny, to pobiera jej nazwę, używając gethostname(2), następnie przekazuje ją do gethostbyname_r(3), aby dostać adres IPv4 komputera, by w końcu zwrócić wartość utworzoną przez pomieszanie bitów adresu IPv4. (Taka wartość może nie być unikatowa).
Nie da się zapewnić, że ten identyfikator jest globalnie niepowtarzalny.
Angielska wersja tej strony pochodzi z wydania 4.07 projektu Linux man−pages. Opis projektu, informacje dotyczące zgłaszania błędów można oraz najnowszą wersję oryginału można znaleźć pod adresem https://www.kernel.org/doc/man−pages/.
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Przemek Borys (PTM) <pborys AT dione DOT ids DOT pl>, Andrzej M. Krzysztofowicz (PTM) <ankry AT green DOT mf DOT pg DOT gda DOT pl> i Robert Luberda <robert AT debian DOT org>.
Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 4.07 oryginału.