Az anonim cső a folyamatok közötti kommunikáció ( IPC ) egyik módszere az operációs rendszerben , amely elérhető a kapcsolódó folyamatok számára – szülő és gyermek. Az operációs rendszer által kezelt külső tárolóeszköz memóriaterületeként ábrázolva, amely ennek a memóriaterületnek a részeit a közös munkához szükséges interakciós folyamatokhoz rendeli hozzá. A csatornában lévő adatok rendszerezése a FIFO stratégiát használja , azaz a csatornára először beírt információ kerül kiolvasásra a csatornából.
Fontos különbség a névtelen cső és a fájl között, hogy az olvasott információ azonnal eltávolítódik belőle, és nem olvasható újra. A fenti rendszerhívások végrehajtása várakozási állapotba hozhatja a folyamatot. Ez akkor fordul elő, ha egy folyamat egy üres csőből próbál adatokat olvasni, vagy adatokat egy teljes csőbe írni. A folyamat akkor ébred fel, ha adat van a csatornában, vagy ha van szabad hely a csatornában, ill.
A folyamatok közötti kétirányú kommunikációhoz általában két névtelen csőre van szükség.
A rendszerhívás névtelen cső létrehozására szolgál pipe. Egy két egész számból álló tömb ennek a rendszerhívásnak a kimeneti paramétere. Ha a hívás normálisan befejeződött, akkor a tömb két fájlleírót tartalmaz: a csatornából való információ olvasásához, illetve az oda írásához. Amikor egy folyamat egy másik folyamatot hoz létre, a szülő fogantyúit a gyermek örökli, és így létrejön a kommunikáció a két folyamat között. Az egyik csak olvasható csövet használ, a másik pedig csak írható. Ezért, ha például adatokat egy csővezetéken keresztül kell átvinni egy szülőfolyamatból egy utódfolyamatba, a szülőfolyamat azonnal bezárja a cső olvasási leíróját azután, hogy az alárendelt folyamat elindult, és a gyermekfolyamat bezárja az írási leírót a csövet. Ha kétirányú kommunikációra van szükség, akkor a szülőfolyamat két csatornát hoz létre, amelyek közül az egyik az egyik, a másik pedig a másik irányú adatátvitelre szolgál.
A rendszerhívás információ írására szolgál egy csatornára write. Információ olvasása egy csatornáról - rendszerhívás read. Ezen hívások első argumentuma egy típusú csatornaleíró int, a második egy mutató arra a memóriaterületre, amellyel a csere zajlik, típusa void, a harmadik a bájtok száma, egy egész típusú. Mindkét hívás visszaadja az átvitt bájtok számát (vagy hiba esetén "-1"-et). Amikor a cső véget ér, a folyamat rendszerhívást ad ki close.
Sok más folyamatközi kommunikációs módszerhez hasonlóan a névtelen csövek létrehozása és konfigurálása a Windows API -funkcióival történik . CreatePipenévtelen cső létrehozására szolgál. Ez a függvény két leírót ad vissza (a csatornára való olvasáshoz és íráshoz). Ahhoz, hogy egy gyermekfolyamat örökölje a leírókat, egy függvénynek kell létrehoznia, amelynek CreateProcessöröklődési jelzője IGAZ. Miután megkapta a szükséges leírót, a folyamat tovább tud kölcsönhatásba lépni a csatornával a ReadFileés függvények segítségével WriteFile, amelyek a csatornából kiolvasási, illetve a csatornába írási információkat biztosítanak. Ha befejezte a csatornát, mindkét folyamatnak le kell zárnia a fogantyúkat a CloseHandle.
Folyamatközi kommunikáció | |
---|---|
Mód | |
Válogatott protokollok és szabványok |