Cómo consultar mi fqdn en POSIX 2018

Cómo consultar mi fqdn en POSIX 2018

Se eliminó el problema 7 de posix gethostbyname, por lo que ya no puedo gethostbyname("my_hostname")obtener el nombre de host canónico para mi máquina. Intenté usarlo getnameinfoen su lugar, pero me dio /etc/hostscomo

127.0.0.1 localhost
127.0.0.1 my_hostname.fqdn my_hostname

Regresaré localhost(lo cual tiene sentido). Sin embargo, gethostbyname("my_hostname")regresa my_hostname.fqdn(al menos tanto en musl como en glibc).

¿Existe un reemplazo razonable para mi caso de uso en el número 7 o no tengo suerte con este?

Respuesta1

Desde la página de manual de Solaris:

DESCRIPTION
 These functions are used to obtain entries describing hosts.
 An  entry  can come from any of the sources for hosts speci-
 fied in the /etc/nsswitch.conf file.  See  nsswitch.conf(4).
 These      functions     have     been     superseded     by
 getipnodebyname(3SOCKET),   getipnodebyaddr(3SOCKET),    and
 getaddrinfo(3SOCKET),  which  provide greater portability to
 applications when multithreading is performed  or  technolo-
 gies  such  as  IPv6  are  used.  For example, the functions
 described in the following cannot be used with  applications
 targeted to work with IPv6.

Como puede ver, la función getaddrinfo()también está en el estándar POSIX y es compatible...

Respuesta2

La forma actual compatible con POSIX de (intentar) determinar el FQDN "canónico" del host actual es llamargethostname()para determinar el nombre de host configurado, luegogetaddrinfo()para determinar la información de dirección correspondiente.

Ignorando errores:

char buf[256];
struct addrinfo *res, *cur;
struct addrinfo hints = {0};
hints.ai_family = AF_UNSPEC;
hints.ai_flags = AI_CANONNAME;
hints.ai_socktype = SOCK_DGRAM;

gethostname(buf, sizeof(buf));
getaddrinfo(buf, 0, &hints, &res);
for (cur = res; cur; cur = cur->ai_next) {
    printf("Host name: %s\n", cur->ai_canonname);
}

Los resultados dependen en gran medida del sistema y de la configuración del resolutor.

información relacionada