Неважно, почему это происходит. errno
имеет значение только для вас, когда в вашем коде произошел сбой вызова функции, и эта функция предназначена для использования errno
для сообщения вам об ошибках. Но это не относится к getaddrinfo()
в большинстве ситуаций.
getaddrinfo()
может (и, скорее всего, использует) другие функции для выполнения своей работы внутри, и если эти функции не сработают, то getaddrinfo()
будет молча обращаться с ними внутри по мере необходимости. Если эти ошибки являются фатальными для работы getaddrinfo()
, то она завершится со своим собственным кодом ошибки, возвращенным вам по мере необходимости.
Так что, пока getaddrinfo()
сам не является сообщив вам код ошибки, вы просто не можете полагаться на errno
, имеющую любое значащее значение. errno
изменение значения - это просто побочный эффект внутренней реализации getaddrinfo()
в вашей системе.
ЕДИНСТВЕННЫЙ раз, когда вы должны смотреть на errno
после выхода getaddrinfo()
когда getaddrinfo()
возвращает EAI_SYSTEM
, ТОЛЬКО ТОГДА errno
будет иметь для вас значимое значение.