Potok (Unix) - Google

Potok (Unix)

Z Wikipedii

Skocz do: nawigacji, szukaj

Potok (ang. pipe) – to 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.

Spis treści

[edytuj] Potoki procesowe

W uniksowych powłokach systemowych używa się symbolu "|" (pionowej linii), aby połączyć dwa lub więcej procesów w potok.

Przykład wykorzystania potoków w systemie UNIX:

$ ps -a | sort | uniq | grep -v sh

Powyższa "konstrukcja" zwróci listę uruchomionych procesów (ps -a), posortowaną alfabetycznie (sort), niezawierającą powtórzeń (uniq), oraz bez linii zawierających wzorzec sh (grep -v sh).


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ć:

int pipe(int fildes[2]);

Funkcja pipe() umieszcza dwa nowe deskryptory plików w tablicy fields[] (fields[0] – deskryptor pliku tylko do odczytu, fields[1] – 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.

[edytuj] Potok nazwany

Potok nazwany (lub łącze nazwane) jest to rozwinięcie idei potoku, polegające na stworzeniu specjalnego pliku, który ma służyć jako łącznik między procesami. Zapewnia to wygodny mechanizm przekazywania danych pomiędzy niespokrewnionymi ze sobą procesami.

W Uniksie do tworzenia potoków nazwanych stosuje się program mkfifo lub mknod.

$ mkfifo plik_fifo
$ mknod plik_fifo p

Z poziomu programu można skorzystać z następujących dwóch standardowych funkcji:

#include <sys/types.h>
#include <sys/stat.h>

int mkfifo(const char *path, mode_t mode);
int mknod(const char *path, mode_t mode, dev_t dev);

[edytuj] Zobacz też

[edytuj] Linki zewnętrzne


Rosjanie chcą szukać ropy w Zatoce Meksykańskiej
Rosyjskie firmy naftowe mogą wkrótce rozpocząć poszukiwania ropy w Zatoce Meksykańskiej w rejonie Kuby - powiedział w niedzielę rosyjski ambasador w tym kraju na kilka dni przed przybyciem na Kubę prezydenta Rosji Dmitrija Miedwiediewa.
APEC: nie tworzyć nowych "barier ochronnych" w gospodarce
Przywódcy 21 krajów Azji i Pacyfiku na zakończonych w niedzielę dwudniowych obradach w Limie, na szczycie APEC, postanowili "przerwać zaklęty krąg niepewności", jak oświadczył prezydent Peru, Alan Garcia, przedstawiając rezultaty spotkania.
USA: Bill Richardson przyszłym sekretarzem handlu?
Amerykański prezydent-elekt Barack Obama mianuje nowym sekretarzem handlu dotychczasowego gubernatora stanu Nowy Meksyk Billa Richardsona - poinformował nieoficjalnie w niedzielę jeden z członków sztabu Obamy.
Timothy Geithner przyszłym sekretarzem skarbu USA
Prezes Rezerw Federalnych Nowego Jorku, Timothy Geithner, został wyznaczony przez Baracka Obamę na stanowisko nowego sekretarza skarbu USA - poinformował w niedzielę doradca prezydenta-elekta.
VAT w dół dla pobudzenia wydatków konsumentów
Brytyjskie media spekulują na temat planowanej przez rząd przejściowej obniżki stawki VAT, dla pobudzenia wydatków konsumpcyjnych i tym samym wsparcia handlu detalicznego i przemysłu w okresie przedświątecznym.
Linki: Strona g³ówna