Сортоф, трубопровід працює так: він спочатку виконує першу команду, а потім другу команду у вашому випадку.
Тобто, давайте A|Bбуде дана команда. Тоді немає впевненості в тому Aабо Bпочинає першим. Вони можуть запуститися точно в той самий час, якщо є кілька процесорів. Труба може містити не визначений, але обмежений обсяг даних.
Якщо B намагається прочитати з труби, але даних немає, Bбуде чекати, поки дані надійдуть. Якщо ви Bчитали з диска, Bможе виникнути така ж проблема і потрібно почекати, поки читання диска закінчиться. Більш близькою аналогією було б читання з клавіатури. Там Bпотрібно буде чекати, коли користувач введе. Але у всіх цих випадках B розпочав операцію "читання" і повинен почекати, поки вона закінчиться. Але якщо Bкоманда така, що їй потрібен лише частковий вихід, Aто після певної точки, де Bдосягнутий рівень входу, Aбуде знищено SIGPIPE
Якщо Aнамагається записати на трубу, і труба заповнена, Aпотрібно зачекати, поки деяка кімната в трубі стане вільною. Aможе виникнути така ж проблема, якби він писав до терміналу. Термінал має контроль потоку і може поміркувати темп передачі даних. У будь-якому випадку, до A, він запустив операцію "запис" і буде чекати, поки операція запису завершиться.
Aі Bведуть себе як спільні процеси, хоча не всі спільні процеси будуть спілкуватися з трубою. Ніхто не повністю контролює інше.
-mаргумент.