#include <stdio.h> #include <string.h> #include <netinet/in.h> #include <arpa/nameser.h> #include <resolv.h> #include <pthread.h> void* fn(void* arg) { char* dn = (char*)arg; unsigned char buff[8000]; if(-1 == res_search(dn, 1, 1, buff, 8000)) { printf("Error: res_search()\n"); } else { printf("Success!\n"); } return 0; } int main(int argc, char** argv) { pthread_t pid; if(2 != argc) { printf("Usage: %s <domain>\n", argv[0]); return 1; } _res.options |= RES_DEBUG; if(0 != res_init()) { printf("Error: res_init()\n"); return(1); } #if 1 /* Test it in a different thread -- the failure case */ if(0 != pthread_create(&pid, 0, fn, (void*)argv[1])) { printf("Failed to create thread.\n"); return 1; } pthread_join(pid, 0); #else { unsigned char buff[8000]; if(-1 == res_search(argv[1], 1, 1, buff, 8000)) { printf("Error: res_search()\n"); } else { printf("Success!\n"); } } #endif return 0; }