Pojmenovaná roura

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Pojmenovaná roura (funguje jako fronta FIFO) rozšiřuje tradiční koncept roury v Unixu a unixových systémech. Pojmenovaná roura je jednou z metod meziprocesové komunikace (IPC), která se využívá u nepříbuzných procesů. Je trvalá, takže ji uživatel musí nejprve vytvořit (jako speciální soubor), procesy se k ní musí připojit a po ukončení používání je nutné ji odstranit. Stejný koncept je možné využívat i v Microsoft Windows, avšak způsob jeho použití se podstatně liší.

Alternativou k pojmenované rouře je anonymní roura („nepojmenovaná“), kterou lze vytvořit jen mezi příbuznými procesy a zaniká automaticky v okamžiku jejich ukončení. Pokročilejší metodou IPC jsou sokety, které umožňují obousměrnou komunikaci.

Použití[editovat | editovat zdroj]

Pojmenovanou rouru je třeba před použitím vytvořit pomocí příkazu (nebo stejnojmenné funkce) mkfifo nebo mknod. S rourou pak pracují dva nezávislé procesy: jeden program do roury zapisuje a druhý z ní čte.

Například můžeme vytvořit rouru a nastavit gzip, aby komprimoval všechno, co se mu dostane na vstup z roury:

mkfifo moje_roura
gzip -9 -c < moje_roura > out.gz

Z dalšího shellu může nezávisle poslat data ke komprimaci:

cat soubor > moje_roura

Pomocí pojmenované roury se provádí například komunikace mezi dvěma procesy s různými oprávněními. Přes webovou stránku obsluhovanou PHP nebo CGI skriptem zapisuje uživatel do roury požadavek na změnu chování trvale běžícího (démona) programu Nagios.

Související články[editovat | editovat zdroj]

  • Roura (Unix) – anonymní (nepojmenovaná) roura mezi příbuznými procesy
  • Soket – pokročilejší IPC s možností obousměrné komunikace i mezi procesy na různých počítačích