Navngivet rør - Named pipe

I computing er et navngivet rør (også kendt som en FIFO for sin adfærd) en forlængelse af det traditionelle rørkonceptUnix og Unix-lignende systemer og er en af ​​metoderne til kommunikation mellem processer (IPC). Konceptet findes også i OS/2 og Microsoft Windows , selvom semantikken adskiller sig væsentligt. Et traditionelt rør er "ikke navngivet " og varer kun lige så længe som processen. Et navngivet rør kan dog vare så længe systemet er oppe, ud over procesens levetid. Den kan slettes, hvis den ikke længere bruges. Normalt vises et navngivet rør som en fil, og processer vedhæftes generelt til det for IPC.

I Unix

I stedet for en konventionel, ikke navngivet shell -pipeline gør en navngivet pipeline brug af filsystemet . Det oprettes eksplicit ved hjælp af mkfifo()eller mknod(), og to separate processer kan få adgang til røret ved navn - en proces kan åbne det som læser og den anden som skribent.

For eksempel kan man oprette et rør og oprette gzip for at komprimere ting, der er ledet til det:

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

I en separat processkal, uafhængigt, kunne man sende dataene, der skal komprimeres:

cat file > my_pipe

Det navngivne rør kan slettes ligesom enhver fil:

rm my_pipe

Et navngivet rør kan bruges til at overføre oplysninger fra en applikation til en anden uden brug af en midlertidig midlertidig fil. For eksempel kan du rør output fra gzip til et navngivet rør sådan:

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

Indlæs derefter de ukomprimerede data i en MySQL -tabel sådan:

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

Uden dette navngivne rør skulle man skrive hele den ukomprimerede version af file.gz ud, før den indlæses i MySQL. At skrive den midlertidige fil er både tidskrævende og resulterer i mere I/O og mindre ledig plads på harddisken.

PostgreSQL 's kommandolinjeværktøj psql, understøtter også indlæsning af data fra navngivne rør.

I Windows

Et navngivet rør kan tilgås på samme måde som en fil. Win32 SDK funktioner CreateFile, ReadFile, WriteFileog CloseHandleåben, læst fra, skrive til, og tæt et rør, henholdsvis. I modsætning til Unix er der ingen kommandolinjegrænseflade , undtagen PowerShell .

Navngivne rør kan ikke oprettes som filer i et normalt filsystem, i modsætning til i Unix. I modsætning til deres Unix -kolleger er navngivne rør flygtige (fjernet efter den sidste henvisning til dem er lukket). Hvert rør placeres i rodmappen i det navngivne rørfilsystem (NPFS), der er monteret under den særlige sti \\.\pipe\(det vil sige, at et rør med navnet " foo " ville have et fuldt stinavn \\.\pipe\foo). Anonyme rør, der bruges i rørledning, hedder faktisk rør med et tilfældigt navn.

De ses meget sjældent af brugerne, men der er bemærkelsesværdige undtagelser. Den VMware Workstation PC hardware virtualisering værktøj, for eksempel, kan udsætte emuleret serielle porte til værten systemet som navngivne pipes, og WinDbg kernetilstand debugger fra Microsoft understøtter navngivet rør som en transport til af fejlfinde sessioner (i virkeligheden, kan VMware og WinDbg være sammenkoblet - som WinDbg normalt kræver en seriel forbindelse til målcomputeren - lade driver udviklere gør deres udvikling og afprøvning på en enkelt computer). Begge programmer kræver, at brugeren indtaster navne i formularen. \\.\pipe\name

Windows NT navngivne rør kan arve en sikkerhedskontekst.

Resumé af navngivne rør på Microsoft Windows:

Den .NET Framework 3.5 er tilføjet named pipe.

Navngivne rør kan også bruges som slutpunkt i Microsoft SQL Server .

Navngivne rør er også en netværksprotokol i SMB-pakken ( Server Message Block ), der er baseret på brugen af ​​en særlig IPC-deling ( inter-process communication ). SMB's IPC kan problemfrit og gennemsigtigt videregive brugerens godkendelseskontekst til Named Pipes. Windows NTs hele NT Domain -protokolpakken af ​​tjenester implementeres som DCE/RPC -service over navngivne rør, ligesom Exchange 5.5 -administrative applikationer.

Se også

Referencer

eksterne links