Potok

Z Linux Wiki
Skocz do: nawigacja, szukaj
Nuvola apps kate.png
Ten artykuł wymaga poprawy – należy dodać przykład użycia pipe() w programie. Jeśli możesz, popraw go.

Potok (ang. pipeline lub krócej pipe) – jeden z podstawowych sposobów komunikacji międzyprocesowej występujący w systemach pochodzących od Uniksa, w tym w Linuksie. Polega on na połączeniu dwóch strumieni danych. Dane są pobierane z pierwszego z nich i przekazywane do drugiego. Zazwyczaj strumieniami tymi są standardowe wyjście i standardowe wejście.

Potoki w powłoce poleceń

Do tworzenia potoków przysyłających dane ze standardowego wyjścia jednego programu do standardowego wyjścia drugiego w powłodze poleceń używany jest znak |. Użycie to ma postać:

$ <aplikacja1> | <aplikacja2>

Przykładowo, próba wyświetlenia urządzeń podpiętych przez PCI przy użyciu polecenia lspci, wybranie z nich tylko linii zawierających ciąg VGA przu użyciu polecenia grep i czym wyświetlenie ich ma postać:

$ lspci | grep VGA

Możliwe jest również połączenie tym sposobem większej liczby aplikacji, np:

$ lspci | cat | grep VGA

Powyższy przykład wyświetli dokładnie to samo, co poprzedni - cat bez parametrów przekazuje po prostu zawartość ze standardowego wejścia na standardowe wyjście.

Potoki w programach

Do tworzenia potoku w oprogramowaniu służy wywołanie systemowe pipe() z pliku nagłówkowego <unistd.h>. Przyjmuje ono jeden argument, będący tablicą składającą się z dwóch deskryptorów plików.

Zobacz też