Pojmenovaná roura

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

Pojmenovaná roura rozšiřuje v informatice tradiční koncept roury v unixových systémech. Je jednou z metod meziprocesové komunikace (IPC), která funguje jako fronta FIFO. Je využívána pro komunikaci mezi nepříbuznými procesy a je trvalá, což znamená že ji uživatel nejprve vytvoří (jako speciální soubor), procesy se k ní následně připojí a po ukončení používání je možné ji odstranit. Stejný koncept existuje i v systému 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