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.