Navngivet rør

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 15. december 2018; checks kræver 3 redigeringer .

I programmering er en navngivet pipe eller en navngivet pipeline ( eng.  named pipe ) en af ​​metoderne til interproceskommunikation , en udvidelse af konceptet med en pipeline i Unix og lignende operativsystemer . Et navngivet rør tillader forskellige processer at kommunikere, selvom de programmer, der kører i disse processer, ikke oprindeligt blev skrevet til at interagere med andre programmer. Dette koncept findes også i Microsoft Windows , selvom dets semantik er derer væsentligt anderledes. Den traditionelle kanal er "navnløs", fordi den eksisterer anonymt og kun mens processen kører. Navngivet rør - findes i systemet efter afslutningen af ​​processen. Den skal "kobles ud" eller fjernes, når den ikke længere er i brug. Processer er normalt knyttet til en kanal for at kommunikere mellem dem.

Navngivne rør i Unix

I stedet for den traditionelle, unavngivne shell-pipeline oprettes et navngivet rør eksplicit med  mknod eller mkfifo , og to forskellige processer kan referere til det ved navn.

For eksempel kan du oprette et rør og indstille gzip til at komprimere det, der går ind i det:

mkfifo rør gzip -9 -c < rør > ud &

Sideløbende, i en anden proces, kan du udføre:

kat fil > rør

Dette vil komprimere de overførte data med gzip.

Navngivne rør på Windows

På Windows er designet af navngivne rør forspændt mod klient-server- interaktion , og de fungerer meget som sockets : ud over normale læsninger og skrivninger understøtter navngivne rør på Windows en eksplicit "passiv" tilstand for serverapplikationer (til sammenligning: en UNIX domæne socket ). Windows 95 understøtter navngivne pipe-klienter, og Windows NT filialsystemer kan også fungere som servere.

Et navngivet rør kan tilgås stort set ligesom en fil. Du kan bruge Windows API -funktionerne CreateFile, CloseHandle, ReadFile, WriteFile til at åbne og lukke en kanal, læse og skrive. C - standardbiblioteksfunktionerne såsom fopen , fread , fwrite og fclose kan også bruges i modsætning til Windows sockets , som ikke implementerer brugen af ​​standard netværksfiloperationer. Der er ingen kommandolinjegrænseflade (som i Unix).

Navngivne pipes eksisterer ikke permanent og kan ikke, i modsætning til Unix, oprettes som specielle filer i et vilkårligt skrivbart filsystem, men har midlertidige navne (frigivet efter den sidste reference til dem er lukket), som er allokeret i roden af ​​den navngivne pipe-fil system ( navngivet pipe filsystem, NPFS )  og er monteret på en speciel sti "\\.\pipe\" (det vil sige, en pipe kaldet " foo " vil have det fulde navn "\\.\pipe\foo"). De anonyme rør, der bruges i rørledninger, er faktisk navngivne rør med et tilfældigt navn.

Navngivne rør er normalt ikke direkte tilgængelige for brugeren, men der er bemærkelsesværdige undtagelser. For eksempel kan VMWares arbejdsstationsvirtualiseringsværktøj åbne en emuleret seriel port til værtssystemet som en navngivet pipe, og Microsofts kd - kernelevel- debugger understøtter navngivne pipes som en fejlretningsmeddelelse (faktisk da kd normalt kræver en seriel. forbindelse til målmaskinen). , VMware og kd kan kobles sammen for at fejlsøge enhedsdrivere på den samme computer). Begge programmer kræver, at brugeren angiver rørnavne i formen "\\.\rør\ navn ".

Navngivne rør i Windows NT kan arve en sikkerhedskontekst.

Navngivne rør i Windows-netværk

Named Pipes er også en netværksprotokol i SMB baseret på brugen af ​​en særlig del af inter-process communication (IPC). IPC i SMB kan problemfrit og gennemsigtigt videregive brugerens autentificeringskontekst til den anden side af det navngivne rør. Godkendelsesarv for Windows NT Named Pipes er så gennemsigtig for brugeren og udvikleren, at den næsten er usynlig og ofte misforstås.

Se også

Links