Оказывается, что glibc gethostbyname_r не будет автоматически перезагружать свою конфигурацию, если эта конфигурация изменяется. Вы должны вручную вызвать res_init. См. отчет об ошибке ниже.
Примечание. Ни в справочной странице для gethostbyname_r, ни для rer_init не упоминается это ограничение.
Мое решение очень специфично. Это работает для нашего долго работающего сервера, но это не мое идеальное решение.
У меня есть функция, которая проверяет mtime файла /etc/resolv.conf с последним известным mtime (0 для DNE). Если два раза
отличается тогда я называю res_init. Эта функция вызывается при запуске программы, а затем периодически для перезагрузки конфигурации.
Отчет об ошибке glibc
libc кеширует resolv.conf forever
...
Вот для чего нужна res_init (), назовите это.