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ć:
<terminal>
$ <aplikacja1> | <aplikacja2>
</terminal>
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ć:
<terminal>
$ lspci | grep VGA
</terminal>
Możliwe jest również połączenie tym sposobem większej liczby aplikacji, np:
<terminal>
$ lspci | cat | grep VGA
</terminal>
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.