V programování je pojmenované potrubí nebo pojmenované potrubí ( anglicky named pipe ) jednou z metod meziprocesové komunikace , rozšířením konceptu potrubí v Unixu a podobných operačních systémech . Pojmenovaný kanál umožňuje různým procesům komunikovat, i když programy spuštěné v těchto procesech nebyly původně napsány pro interakci s jinými programy. Tento koncept existuje také v Microsoft Windows , i když sémantika tam je zcela odlišná. Tradiční kanál je „bezejmenný“, protože existuje anonymně a pouze během běhu procesu. Pojmenované potrubí - existuje v systému po ukončení procesu. Když se již nepoužívá, měl by být "odpojen" nebo odstraněn. Procesy jsou obvykle připojeny ke kanálu, aby mezi nimi komunikovaly.
Namísto tradičního, nepojmenovaného shell pipeline , je pojmenovaný roura vytvořen explicitně pomocí mknod nebo mkfifo a dva různé procesy na něj mohou odkazovat jménem.
Můžete například vytvořit rouru a nastavit gzip tak, aby komprimoval to, co do ní jde:
potrubí mkfifo gzip -9 -c < potrubí > ven &Paralelně v jiném procesu můžete provést:
soubor cat > potrubíTo zkomprimuje přenášená data pomocí gzip.
V systému Windows je návrh pojmenovaných kanálů zaměřen na interakci klient-server a fungují podobně jako sokety : kromě normálního čtení a zápisu podporují pojmenované kanály ve Windows explicitní „pasivní“ režim pro serverové aplikace (pro srovnání: a soket domény UNIX ) . Windows 95 podporuje klienty pojmenovaného kanálu a pobočkové systémy Windows NT mohou také sloužit jako servery.
K pojmenovanému kanálu lze přistupovat v podstatě jako k souboru. K otevření a zavření kanálu, čtení a zápisu můžete použít funkce Windows API CreateFile, CloseHandle, ReadFile, WriteFile. Na rozdíl od soketů Windows , které neimplementují použití standardních operací se síťovými soubory , lze také použít funkce standardní knihovny C , jako je fopen , fread , fwrite a fclose . Neexistuje žádné rozhraní příkazového řádku (jako v Unixu).
Pojmenované kanály neexistují trvale a na rozdíl od Unixu je nelze vytvořit jako speciální soubory v libovolném zapisovatelném souborovém systému, ale mají dočasné názvy (uvolněné po uzavření posledního odkazu na ně), které jsou přiděleny v kořenovém adresáři souboru pojmenovaného kanálu. system ( pojmenovaný pipe filesystem, NPFS ) a jsou připojeny na speciální cestu "\\.\pipe\" (tj. roura s názvem " foo " bude mít celé jméno "\\.\pipe\foo"). Anonymní kanály používané v kanálech jsou ve skutečnosti pojmenované kanály s náhodným názvem.
Pojmenované kanály obvykle nejsou přímo přístupné uživateli, ale existují významné výjimky. Například nástroj pro virtualizaci pracovních stanic VMWare může otevřít emulovaný sériový port do hostitelského systému jako pojmenovaný kanál a ladicí program Microsoft kd na úrovni jádra podporuje pojmenované kanály jako ladicí zprávu (ve skutečnosti, protože kd obvykle vyžaduje sériový připojení k cílovému počítači). , VMware a kd lze propojit a ladit ovladače zařízení na stejném počítači). Oba programy vyžadují, aby uživatel zadal názvy kanálů ve tvaru "\\.\ název potrubí ".
Pojmenované kanály v systému Windows NT mohou zdědit kontext zabezpečení.
Named Pipes je také síťový protokol v SMB založený na použití speciální části meziprocesové komunikace (IPC). IPC v SMB může hladce a transparentně předat kontext ověřování uživatele na druhou stranu pojmenovaného kanálu. Dědičnost ověřování pro Windows NT Named Pipes je pro uživatele a vývojáře tak transparentní, že je téměř neviditelná a často je špatně pochopena.
Meziprocesová komunikace | |
---|---|
Metody | |
Vybrané protokoly a standardy |