inapt 'host' cmdの代わりに次のものを使用します。これにより、自動的に正しい制限がいくつかの制限付きで実行されます(IPv4のみ)。
myhost.c:
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <errno.h>
#include <string.h>
#define TOIN(a) ((struct sockaddr_in *)&(a))
main(argc, argv)
char **argv;
{
int err;
struct sockaddr sa;
char hbuf[NI_MAXHOST];
if (argc <= 1) {
printf("more args\n");
exit(-1);
}
TOIN(sa)->sin_family = AF_INET;
if (inet_pton(AF_INET, *(argv + 1), &TOIN(sa)->sin_addr) != 1) {
printf("can't inet_pton: %s\n", errno ? strerror(errno) : "format err");
exit(-1);
}
if (err = getnameinfo(&sa, sizeof(struct sockaddr_in), hbuf, sizeof hbuf, 0, 0, NI_NAMEREQD)) {
// printf("%s\n", gai_strerror(err));
printf("Host %s not found: 3(NXDOMAIN)\n", *(argv + 1));
exit(-1);
} else {
printf("%s\n", hbuf);
exit(0);
}
}
getent hosts amd.com
おそらく、少し簡単です