Buffered Writes verstecken Fehler: Warum Lesen und Schreiben nicht symmetrisch sind
Reading and writing are less symmetric than you (probably) think
Beim Lesen ist die Welt in Ordnung: Schlägt etwas fehl, erfährt es der Aufrufer, bevor er die Daten zu Gesicht bekommt. Beim Schreiben dagegen kopiert die Bibliothek die Bytes nur in ihren Puffer und meldet sofort Erfolg – der eigentliche write-Systemaufruf folgt erst später. Wer dann nicht auch fflush, fclose und fsync prüft, weiß nie, ob seine Daten wirklich auf dem Datenträger angekommen sind. Der Beitrag zeigt, wie viele Pufferschichten zwischen Anwendung und Speicher liegen und wo Fehler unbemerkt verschwinden.
Puffern auf der Schreibseite ist viel heikler, weil es das eigentliche Schreiben und die Fehlermeldung auf eine Weise verzögert, die die meisten Programmierer kennen sollten, aber meist nicht kennen.