Il piping funziona collegando l'uscita di un processo A all'ingresso di B. La connessione può essere interrotta quando
- A chiude il suo output. B otterrà EOF.
- B chiude il suo input. A riceverà un errore che l'output non è più disponibile quando tenta di scrivere il byte successivo.
Poiché questi due casi sono così comuni, la gestione è stata spostata nella libreria C standard.
head chiude il file di input dopo aver letto la quantità richiesta. quando una pipe viene chiusa da un lato, l'altro riceve errori di scrittura; questo causa base64 per chiudersi, che a sua volta provoca cat per chiudere.
Dopo base64 emette 10 byte, head ottiene abbastanza ingressi e uscite. Quando il primo tenta di emettere più byte, riceverà il segnale SIGPIPE e quindi uscirà anche lui. Per lo stesso motivo, cat uscirà a sua volta.