Pojmenované potrubí - Named pipe

V oblasti výpočetní techniky je pojmenovaný kanál ( pro své chování také známý jako FIFO ) rozšířením tradičního konceptu potrubí v systémech Unix a Unix a je jednou z metod meziprocesové komunikace (IPC). Koncept se nachází také v OS/2 a Microsoft Windows , i když se sémantika podstatně liší. Tradiční dýmka je „ bez názvu “ a vydrží jen tak dlouho, jak celý proces trvá. Pojmenovaná trubka však může trvat tak dlouho, dokud je systém v provozu, mimo životnost procesu. Může být odstraněn, pokud již není používán. Pojmenovaný kanál se obvykle zobrazí jako soubor a obecně k němu připojí procesy pro IPC.

V Unixu

Namísto konvenčního, nejmenovaného, ​​shell kanálu, pojmenovaný kanál využívá souborový systém . Je explicitně vytvořen pomocí mkfifo()nebo mknod()a dva samostatné procesy mají přístup k kanálu podle názvu - jeden proces jej může otevřít jako čtečku a druhý jako zapisovač.

Například lze vytvořit potrubí a nastavit gzip pro komprimaci věcí, které jsou k němu připojeny:

mkfifo my_pipe
gzip -9 -c < my_pipe > out.gz &

V samostatném procesním prostředí lze nezávisle odesílat data ke komprimaci:

cat file > my_pipe

Pojmenovanou rouru lze odstranit stejně jako jakýkoli soubor:

rm my_pipe

Pojmenovaný kanál lze použít k přenosu informací z jedné aplikace do druhé bez použití přechodného dočasného souboru. Například můžete výstup gzip do potrubí pojmenovat takto:

mkfifo -m 0666 /tmp/namedPipe
gzip -d < file.gz > /tmp/namedPipe

Potom načtěte nekomprimovaná data do tabulky MySQL takto:

LOAD DATA INFILE '/tmp/namedPipe' INTO TABLE tableName;

Bez tohoto pojmenovaného kanálu by bylo potřeba před načtením do MySQL vypsat celou nekomprimovanou verzi file.gz. Zápis dočasného souboru je časově náročný a má za následek více I/O a méně volného místa na pevném disku.

Nástroj příkazového řádku PostgreSQLpsql , také podporuje načítání dat z pojmenovaných kanálů.

Ve Windows

K pojmenovanému kanálu lze přistupovat podobně jako k souboru. Win32 SDK funkce CreateFile, ReadFile, WriteFilea CloseHandleotevírat, číst z, napište, v blízkosti potrubí, resp. Na rozdíl od Unixu neexistuje žádné rozhraní příkazového řádku , kromě PowerShell .

Pojmenované kanály nelze na rozdíl od Unixu vytvářet jako soubory v normálním souborovém systému. Také na rozdíl od svých unixových protějšků jsou pojmenované kanály nestálé (odstraněny po uzavření posledního odkazu na ně). Každá dýmka je umístěna v kořenovém adresáři pojmenovaného souborového systému potrubí (NPFS), připojeném pod speciální cestou \\.\pipe\(tj. Roura s názvem „ foo “ bude mít úplný název cesty \\.\pipe\foo). Anonymní potrubí používané při potrubí jsou ve skutečnosti pojmenované potrubí s náhodným názvem.

Uživatelé je vidí velmi zřídka, ale existují výrazné výjimky. VMware Workstation PC hardware virtualizační nástroj, například může vystavit emulován sériové porty k hostitelskému systému, pojmenované kanály a windbg kernel mode debugger od společnosti Microsoft podporuje pojmenované kanály jako dopravní pro ladění relace (ve skutečnosti, VMware a WinDbg může být spojené dohromady - protože WinDbg normálně vyžaduje sériové připojení k cílovému počítači - vývojáři ovladačů mohou provádět svůj vývoj a testování na jednom počítači). Oba programy vyžadují, aby uživatel zadal jména do formuláře. \\.\pipe\name

Windows NT pojmenované kanály mohou zdědit kontext zabezpečení.

Souhrn pojmenovaných kanálů v systému Microsoft Windows:

Rozhraní .NET Framework 3.5 přidalo podporu pojmenovaných kanálů.

Pojmenované kanály lze také použít jako koncový bod na serveru Microsoft SQL Server .

Pojmenované kanály jsou také síťovým protokolem v sadě SMB ( Server Message Block ), založené na použití speciální sdílené meziprocesové komunikace (IPC). IPC SMB může bezproblémově a transparentně předávat kontext ověřování uživatele do Named Pipes. Celá řada služeb protokolu NT Domain systému Windows NT je implementována jako služba DCE/RPC přes Named Pipes, stejně jako aplikace pro správu Exchange 5.5.

Viz také

Reference

externí odkazy