Potok (Unix)
Z Wikipedii
| Zasugerowano, aby artykuł Potok (funkcja powłoki) zintegrować z tym artykułem lub sekcją. (dyskusja) |
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.
|