La curiosa limitación de errno(3) en Linux
La página de manual de errno(3) de Linux revela una limitación peculiar: errno puede modificarse incluso en llamadas a funciones exitosas, y nunca se establece en cero por ninguna llamada al sistema o función de biblioteca. Esto se debe al diseño tradicional de Unix, donde las llamadas al sistema generalmente devuelven errno solo en caso de fallo, dejándolo sin cambios en caso de éxito. Las funciones de biblioteca C pueden realizar varias llamadas al sistema, algunas de las cuales pueden fallar sin afectar al éxito general de la función de biblioteca, dejando errno con el valor de fallo. ANSI C y POSIX heredaron este comportamiento, exigiendo que errno sea significativo solo cuando una función falla y su documentación especifica el establecimiento de errno.