C/Strumień: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m →‎Potoki: obraz
Linia 113:
 
==Potoki==
Potok (ang. pipe)<ref>[https://linux.die.net/man/3/popen popen(3) - Linux man page]</ref> – jeden z mechanizmów komunikacji międzyprocesowej umożliwiający wymianę danych pomiędzy dwoma procesami. Odbywa się to najczęściej poprzez połączenie standardowego wyjścia jednego procesu ze standardowym wejściem drugiego.
[[Plik:Pipeline.svg|mały|prawo|Prosty schemat potoku POSIX (Unix) standardowych strumieni. Przedstawiono: terminal tekstowy, uruchomione programy w potoku, strumienie standardowe wejście stdin, standardowe wyjście stdout, standardowe wyjście błędu stderr.]]
 
Do stworzenia nienazwanego potoku służy wywołanie systemowe ''pipe()''. Prototyp funkcji bibliotecznej znajduje się w pliku nagłówkowym ''unistd.h'' i ma następującą postać:
 
<syntaxhighlight lang= c>
int pipe(int fields[2]);
</syntaxhighlight >
 
Funkcja ''pipe()'' umieszcza dwa nowe deskryptory plików w tablicy ''fields[]'' (''fields[0]'' – deskryptor pliku tylko do odczytu, ''fields'' – deskryptor pliku tylko do zapisu) i zwraca 0 w przypadku powodzenia lub -1 w przypadku błędu.
 
Funkcja ''pipe()'' często używana jest w połączeniu z funkcją ''fork()'' w celu zapewnienia komunikacji między procesem macierzystym oraz jego procesami potomnymi.
 
Potoki<ref>[https://linux.die.net/man/3/popen popen(3) - Linux man page]</ref>
==Strumienie zdefiniowane przez uzytkownika==