A Limitação Curiosa do errno(3) no Linux
A página de manual do errno(3) do Linux revela uma limitação peculiar: errno pode ser modificado mesmo em chamadas de função bem-sucedidas, e nunca é definido como zero por nenhuma chamada de sistema ou função de biblioteca. Isso decorre do design tradicional do Unix, onde as chamadas de sistema geralmente retornam errno apenas em caso de falha, deixando-o inalterado em caso de sucesso. Funções de biblioteca C podem fazer várias chamadas de sistema, algumas das quais podem falhar sem afetar o sucesso geral da função de biblioteca, deixando errno com o valor de falha. ANSI C e POSIX herdaram esse comportamento, exigindo que errno seja significativo apenas quando uma função falha e sua documentação especifica a definição de errno.