A programozásban a named pipe vagy a named pipeline ( eng. named pipe ) a folyamatok közötti kommunikáció egyik módszere, a csővezeték fogalmának kiterjesztése Unix és hasonló operációs rendszerekben . Az elnevezett cső lehetővé teszi a különböző folyamatok kommunikációját, még akkor is, ha az ezekben a folyamatokban futó programok eredetileg nem úgy lettek megírva, hogy kölcsönhatásba lépjenek más programokkal. Ez a fogalom a Microsoft Windows rendszerben is létezik , bár a szemantika ott egészen más. A hagyományos csatorna "névtelen", mert névtelenül létezik, és csak a folyamat futása közben. Named pipe – a folyamat befejezése után létezik a rendszerben . Ki kell húzni a konnektorból, vagy el kell távolítani, ha már nincs használatban. A folyamatok általában egy csatornához kapcsolódnak a köztük lévő kommunikáció érdekében.
A hagyományos, névtelen shell pipeline helyett a nevesített pipe kifejezetten az mknod vagy mkfifo segítségével jön létre , és két különböző folyamat hivatkozhat rá név szerint.
Például létrehozhat egy csövet, és beállíthatja a gzip -et, hogy tömörítse a benne lévő tartalmat:
mkfifo cső gzip -9 -c < pipe > out &Ezzel párhuzamosan egy másik folyamatban végrehajthatja a következőket:
macska fájl > pipaEz tömöríti a továbbított adatokat a gzip segítségével.
A Windows rendszeren a névvel ellátott csövek kialakítása a kliens-szerver interakció felé torzul , és nagyjából úgy működnek, mint a socketek : a normál olvasási és írási műveletek mellett a Windows elnevezett csövek kifejezetten „passzív” módot is támogatnak a szerveralkalmazások számára (összehasonlításképpen: a UNIX tartományi socket ) . A Windows 95 támogatja a névvel ellátott klienseket, és a Windows NT fiókrendszerei is szolgálhatnak szerverként.
Egy elnevezett cső nagyjából úgy érhető el, mint egy fájl. A Windows API CreateFile, CloseHandle, ReadFile, WriteFile funkcióival megnyithat és bezárhat egy csatornát, olvashat és írhat. A C szabványos könyvtári funkciók , például az fopen , fread , fwrite és fclose is használhatók, ellentétben a Windows socketekkel , amelyek nem valósítják meg a szabványos hálózati fájlműveletek használatát. Nincs parancssori felület (mint a Unixban).
Az elnevezett csővezetékek nem léteznek állandóan, és a Unix-szal ellentétben nem hozhatók létre speciális fájlként tetszőleges írható fájlrendszerben, hanem ideiglenes nevük van (amelyet az utolsó hivatkozás bezárása után adnak ki), amelyek a megnevezett pipe fájl gyökerében vannak lefoglalva. rendszer ( neve pipe fájlrendszer, NPFS ) , és egy speciális "\\.\pipe\" elérési útra vannak felszerelve (vagyis a " foo " nevű cső teljes neve "\\.\pipe\foo" lesz). A csővezetékekben használt névtelen csövek valójában véletlenszerű névvel ellátott csövek.
A névvel ellátott csövek általában nem érhetők el közvetlenül a felhasználó számára, de vannak figyelemre méltó kivételek. Például a VMWare munkaállomás-virtualizációs eszköze képes megnyitni egy emulált soros portot a gazdagéphez névvel ellátott csőként, a Microsoft kd kernel szintű hibakeresője pedig támogatja a named pipes-eket hibakereső üzenetként (sőt, mivel a kd rendszerint soros portot igényel kapcsolat a célgéppel). , A VMware és a kd összekapcsolható az eszközillesztő -programok hibakereséséhez ugyanazon a számítógépen). Mindkét program megköveteli a felhasználótól, hogy a csőneveket "\\.\pipe\ name " formában adja meg.
A Windows NT elnevezett csövek örökölhetik a biztonsági környezetet.
A Named Pipes egy hálózati protokoll az SMB -ben is, amely a folyamatok közötti kommunikáció (IPC) speciális részének használatán alapul . Az SMB-ben lévő IPC zökkenőmentesen és átláthatóan tudja átadni a felhasználó hitelesítési környezetét a megnevezett cső másik oldalára. A Windows NT Named Pipes hitelesítési öröklése annyira átlátszó a felhasználó és a fejlesztő számára, hogy szinte láthatatlan, és gyakran félreértik.
Folyamatközi kommunikáció | |
---|---|
Mód | |
Válogatott protokollok és szabványok |