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
, WriteFile
a CloseHandle
oteví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:
- Intermachine a intramachine IPC
- Half-duplex nebo full-duplex
- Orientováno na bajty nebo na pakety
- Spolehlivý
- Komunikace orientovaná na připojení
- Blokování nebo neblokování čtení a zápisu (volitelné)
- Standardní I/O rukojeti zařízení (
ReadFile
,WriteFile
) - Obor názvů používaný k vytváření úchytů
- Neefektivní provoz WAN (explicitní požadavek na přenos dat, na rozdíl např. Od posuvného okna TCP/IP atd.)
- Peekable čte (číst bez vyjmutí ze vstupního bufferu potrubí)
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.