ошибка устарела

Отвечая на другой вопрос, я наткнулся на справочная страница функции с именем herror. Он очень похож на perror, за исключением того, что выводит ошибки, связанные с какой-то проблемой поиска хоста. На странице руководства указано, что эта функция «устарела». Функция hsterror, которая может быть использована для преобразования номера ошибки в строку без его вывода, также помечена как устаревшая.

Чего я не вижу, так это каких-либо указаний на то, почему любой из них устарел и какую замену следует использовать вместо него. Итак, каков предпочтительный способ превратить неясный номер ошибки h_errno в удобочитаемую строку в системе GNU libc linux? Должно ли каждое крошечное приложение выпускать собственную таблицу перевода и надеяться, что набор возможных кодов ошибок не изменится в ближайшее время?


person MvG    schedule 06.08.2012    source источник


Ответы (1)


Они устарели, потому что gethostbyname* устарело. Вместо этого используйте getaddrinfo и используйте gai_strerror для ошибок.

На gethostbyname(3) справочной странице:

Функции gethostbyname*() и gethostbyaddr*() устарели. Приложения должны использовать getaddrinfo(3) и getnameinfo(3) вместо этого.

person jxh    schedule 06.08.2012
comment
Спасибо! Это сообщение кажется немного менее выраженным, чем то, которое я прочитал первым. Ссылка на новые справочные страницы была бы отличной, но в любом случае я приму этот ответ, как только мне будет разрешено. - person MvG; 06.08.2012