Die kuriose Einschränkung von errno(3) unter Linux

2025-07-04

Die Linux-Manpage errno(3) enthüllt eine merkwürdige Einschränkung: errno kann selbst bei erfolgreichen Funktionsaufrufen geändert werden und wird niemals von einem Systemaufruf oder einer Bibliotheksfunktion auf null gesetzt. Dies rührt von der traditionellen Unix-Architektur her, bei der Systemaufrufe typischerweise errno nur bei Fehlern zurückgeben und ihn bei Erfolg unverändert lassen. C-Bibliotheksfunktionen können mehrere Systemaufrufe durchführen, von denen einige fehlschlagen können, ohne den Erfolg der Bibliotheksfunktion selbst zu beeinträchtigen, wodurch errno den Fehlerwert behält. ANSI C und POSIX haben dieses Verhalten geerbt und fordern, dass errno nur dann aussagekräftig ist, wenn eine Funktion fehlschlägt und ihre Dokumentation die Setzung von errno festlegt.

Entwicklung