Piping funktioniert, indem der Ausgang eines Prozesses A mit dem Eingang von B verbunden wird. Die Verbindung kann unterbrochen werden, wenn
- A schließt seine Ausgabe. B erhält EOF.
- B schließt seine Eingabe. A erhält eine Fehlermeldung, dass die Ausgabe nicht mehr verfügbar ist, wenn es versucht, das nächste Byte zu schreiben.
Da diese beiden Fälle so häufig vorkommen, wurde die Behandlung in die C-Standardbibliothek verschoben.
head schließt die Eingabedatei nach dem Lesen des erforderlichen Betrags. wenn eine Pipe von einer Seite geschlossen wird, bekommt die andere Seite Schreibfehler; dies verursacht base64 zu schließen, was wiederum cat bewirkt zu schließen.
Nach base64 gibt 10 Bytes aus, head bekommt genug Ein- und Ausgänge. Wenn Ersteres versucht, mehr Bytes auszugeben, empfängt es das SIGPIPE-Signal und wird daher ebenfalls beendet. Aus dem gleichen Grund cat wird der Reihe nach beendet.