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.