Komunikace mezi procesy -=-=-=-=-=-=-=-=-=-=-=-=- "Are [Linux users] lemmings collectively jumping off of the cliff of reliable, well-engineered commercial software?" -- Matt Welsh Klasický UNIX nabízel jeden jednoduchý prostředek pro komunikaci - pipe. To je cosi jako soubor ale nikam se neukládá. Pokud pipe otevřete, dostanete dva file descriptory - do jednoho zapisujete a zdruhého můžete číst. Komunikace tedy funguje pouze mezi rodičem a potomkem ale přesto je velmi užitečná. Například: ls | more V dosu vyžaduje dočasný soubor s výstupem ls. V UNIXu shell vytvoří pipe. Do jedné strany nechá ls zapisovat a druhou stranu předá more pro čtení. More tedy zobrazuje zároveň co ls pracuje a není nutné dělat žádné dočasné soubory. Proto, aby mohly i jiné procesy spolu komunikovat vzniklo fifo (first in first out). To je vlastne pipe ale má jméno. Je to tedy soubor na disku a po jeho otevření se můžete spojit s jiným procesem. Mikrojádra zase většinou nabízí komunikaci pomocí zpráv. Každý server čeká na určitém portu a program, když po něm neco chce proste pošlě message s daným příkazem na jeho port. Otevře si teké svůj port a počká na odpověď. Tento mechanizmus se potom velice snadno posílá přes síť. BSD UNIX zavedl sockety. To je opět cosi jako pipe, ale funguje i přes síť a má některá další rozšíření. SystemV do UNIXu zase přidal IPC (Interprocess communication). To má funkce pro semafory, sdílenou pamět a zprávy. výheň