IPC

Jelzések jelezheti a hibát, hogy szinkronizálja folyamatok továbbítására elemi parancsokat egyik folyamat egy másik, például, a serveraDNSnamed (1M) ekként használják signalSIGHUP hogy dannyh.Signaly adatbázis frissítés jel nagyon erőforrás-igényes. Küld egy jelet igényel rendszer hívást, és a szállítás - megszakítás fogadását műveletek és verem (munka egy szubrutin). Kevés információ jeleket, és számuk korlátozott.

Csatornákon keresztül. A példában a parancs strokeshellrassmotrim szervezet programcsatornák szintaxis:

Szokásos kimeneti macska (1), amely megjeleníti a tartalmát faylamyfile átvisszük standard input programmywc (1), amely számolja a sorok, szavak és karakterek. Az eredmény:

A sorok száma, szavak, szimbólumok myfile

Így két folyamat adatcserére. Ha ez a program csatornát használunk, amely egyirányú adatátvitelt két feladatot.

Ahhoz, hogy hozzon létre egy csatorna, a rendszer hívás cső (2):

int cső (int * Fildes), egyébként int cső (int filedes [2]);

amely visszatér a két fájlleírókkal - Fildes [0], hogy ültesse át a csatornát és Fildes [1] olvasható a csatorna (ha a hiba, akkor a hívás visszatér cső - 1). Most az egyetlen folyamat adatokat ír Fildes [0], a másik lehet fogadni ezeket az adatokat izfildes [1]. Mint egy fájlt kap deskriptorfildes [1] egy másik folyamat? Amikor létrehoz örökli az attribútumok a gyermek örökli és mind fájlleírókkal rendelt a szülő folyamat. Hozzáférés az deskriptoramfiledeskanala kaphat folyamat maga, vyzvavshiypipe (2) és a gyermek folyamatokat. A súlyos hiánya csatornák, hogy lehet használni, hogy továbbítja az adatokat a kapcsolódó eljárásokra és nem lehet használni közötti adatátvitelre független folyamatok. Ebben a példában mindkét protsessacat (1) IWC (1) sozdayutsyashelli ennélfogva összefüggésben.

A hátránya a csatornák, hogy lehet használni a kapcsolódó folyamatok, és nem csak akkor használható a valódi szerver program (a hálózat és a nyomtatási várólista-kezelő vezérlő szerver), és nem létezhet tartósan.

Cím FIFO csatorna (FirstInFirstOut, 1-m-lépett, az 1.-out). FIFO egyirányú adatátvitelt jelent, ahol az adatokat olvassa a sorrendjében bejegyzéseket. FIFO nevei, amely lehetővé teszi, hogy kommunikálni független folyamatok (named pipe) .VBSDne ispolzuyutsya.FIFOyavlyaetsya fájltípust (ls-lpokazhet az első pozitsiip). Szisztémás sozdaniyaFIFOispolzuetsya vyzovmknod (2):

ahol pathname- fájl nevét a FS (imyaFIFO)

Mod zászlók tulajdonosi hozzáférési jogok, és így tovább. (polemode) .Naprimer, 0666 -A minden jogosultsága írni és olvasni.

dev- a fájl létrehozásához figyelmen kívül hagyja.

FIFOmozhet létre a parancs strokishell:

Miután létrehozta FIFOmozhet nyitható meg írásra és olvasásra, az írási és olvasási kerülhet sor különböző független folyamatok.

Csatornák FIFOi szokásos csatornákon működnek megfelelően az alábbi szabályokat:

Olvasásakor kisebb számú bájt, mint amennyi a csatorna vagy FIFO, visszaadja a szükséges bájtok száma, a maradékot használjuk fel a következő leolvasást.

Ha a csatorna üres, és nem a folyamat még nem nyitotta ki a felvételhez, olvasás 0. bájt érkezik a csatornára. Ha a csatorna kinyílik az írásra, de nem lesz rögzítve, majd hívja olvas (2) felfüggesztésre kerül, amíg az adatok a csatorna, ha a jelző nincs beállítva zár hiányát O_NDELAY.

Jegyezzük fel a bájtok számát, vagy egy kisebb csatorna kapacitása FIFO, garantált atomically. Ez azt jelenti, hogy abban az esetben a rögzítés a csatorna egyidejűleg több folyamatok adatrészei ne keveredjenek.

Amikor a felvétel nagyobb számú bájt, mint ez lehetővé teszi a csatorna, vagy FIFO, hívja write (2) le van tiltva, hogy helyet szabadítson fel. Atomicity nem garantált. Amikor egy folyamat megkísérli adatokat írjon be a csatorna nem nyitott, sem a folyamat, hogy olvassa el, az eljárás garantálja SIGPIPE jel és hívja write (2) 0 értékkel tér vissza, hogy a telepítési hibák (errno = EPIPE), ha a folyamat nem feldolgozáshoz SIGPIPE előállított jel alapértelmezett feldolgozás - a folyamat befejeződött.

Kapcsolódó cikkek