Todos os comandos em um pipeline são iniciados simultaneamente e executados simultaneamente - o comando 2 não espera que o comando 1 seja encerrado. Em vez disso, os pipelines dependem do bloqueio das operações de leitura até que o comando anterior tenha produzido alguma saída.
Por exemplo, a saída (stdout) de cat /tmp/f
é diretamente 1 conectada à entrada de /bin/sh -i
; sempre que o sh tentar ler o seu stdin, ele irá bloquear até que o cat tenha produzido alguma saída.
1 (Quase diretamente; stdout de gato e stdin de sh são amarrados a duas extremidades de um objeto de 'pipe').