Sortof, potok działa w ten sposób: najpierw wykonuje pierwsze polecenie, a następnie drugie polecenie w twoim przypadku.
Oznacza to, że A|Botrzymamy polecenie. Wtedy nie ma pewności, czy Alub Bzaczyna pierwszy. Mogą rozpocząć się dokładnie w tym samym czasie, jeśli jest wiele procesorów. Potok może przechowywać nieokreśloną, ale skończoną ilość danych.
Jeśli B spróbuje odczytać z potoku, ale żadne dane nie są dostępne, Bpoczeka, aż dane dotrą. Jeśli Bodczytuje z dysku, Bmoże występować ten sam problem i trzeba poczekać, aż odczyt z dysku się zakończy. Dokładniejszą analogią byłoby czytanie z klawiatury. Tam Bmusiałby czekać na wpisanie przez użytkownika. Ale we wszystkich tych przypadkach B rozpoczął operację „odczytu” i musi poczekać, aż zakończy. Ale jeśli Bjest to polecenie, które potrzebuje tylko częściowego wyjścia, Ato po pewnym punkcie, w którym Bosiągnięty jest poziom wejściowyA zostanie zabity przez SIGPIPE
Jeśli Aspróbujesz pisać do potoku, a potok jest pełny, Amusisz poczekać , aż wolne miejsce w potoku stanie się wolne. Amógłby mieć ten sam problem, gdyby zapisywał na terminalu. Terminal ma kontrolę przepływu i może moderować tempo danych. W każdym razie doA , rozpoczął operację „zapisu” i zaczeka na zakończenie operacji zapisu.
Ai Bzachowują się jak koprocesy, chociaż nie wszystkie koprocesy będą komunikować się z potokiem. Żadna z nich nie ma pełnej kontroli nad drugą.
-margument.