En cierto modo, la canalización funciona así: primero ejecuta el primer comando y luego el segundo comando en su caso.
Es decir, seamos A|Bel comando dado. Entonces es incierto si Ao Bcomienza primero. Pueden comenzar exactamente al mismo tiempo si hay varias CPU. Una tubería puede contener una cantidad de datos indefinida pero finita.
Si B intenta leer desde la tubería, pero no hay datos disponibles, Besperará hasta que lleguen los datos. Si Bestaba leyendo desde un disco, Bpodría tener el mismo problema y necesitar esperar hasta que termine la lectura de un disco. Una analogía más cercana sería leer desde un teclado. Allí, Btendría que esperar a que un usuario escriba. Pero en todos estos casos, B ha comenzado una operación de "lectura" y debe esperar hasta que termine. Pero si Bes un comando de tal manera que solo necesita una salida parcial, SIGPIPE matará Adespués de cierto punto donde Bse alcanza el nivel de entrada de s.A
Si Aintenta escribir en la tubería y la tubería está llena, Adebe esperar a que quede espacio libre en la tubería. Apodría tener el mismo problema si estuviera escribiendo en una terminal. Una terminal tiene control de flujo y puede moderar el ritmo de los datos. En cualquier caso, a A, ha comenzado una operación de "escritura" y esperará hasta que finalice la operación de escritura.
Ay Bse comportan como coprocesos, aunque no todos los coprocesos se comunicarán con una tubería. Ninguno de los dos tiene el control total del otro.
-margumento.