Skrypty powłoki Bash #21 - FIFO
Wstęp
Dzień dobry, dziś przedstawię informacje na temat FIFO. Serdecznie zapraszam.
Co to te FIFO?
W informatyce i teorii systemów FIFO jest metodą organizowania manipulacji strukturą danych, w której najstarszy wpis, czyli „głowa” kolejki, jest przetwarzany jako pierwszy.
Jak to ma się do linuxa?
W linuxie FIFO są nazwane potoki (ang. named pipes). Są to specjalne pliki, podobne do potoków, z tą różnicą, że są one użytkowane jako część systemu plików.
Mogą być otwierane do odczytu i zapisu niezależnie od programu. Fifo nie zajmuje na dysku miejsca. Dzieje się tak dlatego, że dane są przekazywane wewnętrznie przez Kernel. Plik FIFO służy jedynie za referencje, dla programów, by można go używać, korzystając ze ścieżki systemowej.
Potoki FIFO muszą zostać otwarte z obu stron, zanim zostaną użyte. To znaczy, że zanim będziemy mogli przekazać dane, musi być co najmniej jeden producent i jeden konsument. W przeciwnym wypadku kolejka będzie zablokowana i nie będzie przyjmować danych.
Jest możliwe, by otworzyć kolejkę w trybie nieblokującym. Jednak jest to możliwe tylko w trybie Read-Only. Jeśli byśmy chcieli otworzyć kolejkę w trybie write-only, otrzymamy błąd - ENXIO (no such device or address)
Jak to stworzyć?
Do stworzenia kolejki potrzebujemy komendy mkfifo
.
Przełącznik -m
jest odpowiedzialny za tryb
Tworzenie
Odczyt zapis
Nie mam jak tu pokazać, jak się zachowują programy przy FIFO.
Program cat
będzie czekał na dane i dopóki ich nie dostanie, będzie blokował sesje. To samo tyczy się komendy echo
, z tym że ona będzie czekała, aż ktoś te dane pobierze.
Próba z FIFO tylko do odczytu
Epilog
Na dziś to tyle.
Mam nadzieję, że dowiedziałeś/łaś się czegoś nowego, albo odświeżyłeś/łaś sobie wiedzę.
Tak czy inaczej, serdecznie Ci dziękuję, za przeczytanie tego posta.
Dodatkowo polecam poczytać man 7 pipe
man 7 fifo
oraz man 1 mkfifo
Jeśli masz potrzebę o cos zapytać, kontakt znajdziesz w zakładce “O Mnie”.
A teraz życzę miłego dzionka i smacznej kawusi :)
Do widzenia.