Przejdź do głównej zawartości

mkfifo


  • mkfifo – narzędzie wiersza poleceń do tworzenia nazwanych potoków (FIFO – First In, First Out), które pozwalają na wymianę danych między procesami poprzez system plików.
  • Główne zastosowania: komunikacja międzyprocesowa (IPC), przesyłanie strumieni danych między programami, buforowanie danych.
  • Dostępność: standardowo we wszystkich dystrybucjach Linux, Unix, BSD i macOS; część standardu POSIX.

Okno terminala
mkfifo [opcje] nazwa_fifo
  • Wariant wywołania: tworzenie jednego lub wielu potoków nazwanych w danym katalogu.
  • Obsługuje standardowe przełączniki do ustawiania uprawnień.

ParametrOpis
-m trybUstaw tryb dostępu (uprawnienia) w formacie ósemkowym lub symbolicznym (np. -m 644, -m u=rw,g=r).
--helpWyświetl pomoc i zakończ.
--versionWyświetl wersję programu i zakończ.

Okno terminala
# 1) Tworzenie prostego potoku FIFO
touch /tmp/potoki # opcjonalnie katalog roboczy
mkfifo /tmp/moj_fifo
Okno terminala
# 2) Tworzenie potoku z określonymi uprawnieniami
mkfifo -m 600 /tmp/sekret_fifo
Okno terminala
# 3) Użycie FIFO do komunikacji między procesami
echo "Hello" > /tmp/moj_fifo &
cat /tmp/moj_fifo
Okno terminala
# 4) Tworzenie wielu potoków na raz
mkfifo fifo1 fifo2 fifo3

  • FIFO zachowuje się jak plik specjalny – nie przechowuje danych na dysku, lecz buforuje je w pamięci jądra.
  • Operacje odczytu/zapisu blokują się, dopóki drugi koniec potoku nie zostanie otwarty.
  • Uprawnienia kontrolują, kto może czytać/zapisywać do potoku.
  • Potoki FIFO mogą być używane także w skryptach jako kanały komunikacji.

Błąd / KomunikatPrzyczynaRozwiązanie
File existsPotok o tej nazwie już istnieje.Usuń plik (rm) lub użyj innej nazwy.
Permission deniedBrak uprawnień do utworzenia w katalogu.Zmień katalog lub użyj sudo.
Invalid modeNieprawidłowy format trybu w opcji -m.Sprawdź składnię (ósemkowa lub symboliczna).
Zawieszenie procesu przy czytaniu/zapisieBrak procesu po drugiej stronie potoku.Uruchom procesy w odpowiedniej kolejności lub w tle.