Nimetty putki

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 15. joulukuuta 2018 tarkistetusta versiosta . tarkastukset vaativat 3 muokkausta .

Ohjelmoinnissa named pipe tai named pipeline ( eng. named pipe ) on yksi prosessien välisen viestinnän menetelmistä , jatkeena Unixin ja vastaavien käyttöjärjestelmien putkilinjan käsitteeseen . Nimetty putki mahdollistaa eri prosessien kommunikoinnin, vaikka näissä prosesseissa käynnissä olevia ohjelmia ei alun perin kirjoitettu toimimaan muiden ohjelmien kanssa. Tämä käsite on olemassa myös Microsoft Windowsissa , vaikka semantiikka siellä on melko erilainen. Perinteinen kanava on "nimetön", koska se on olemassa nimettömänä ja vain prosessin ollessa käynnissä. Nimetty putki - on olemassa järjestelmässä prosessin päätyttyä. Se on "irrotettava" tai irrotettava, kun sitä ei enää käytetä. Prosessit liitetään yleensä kanavaan kommunikoidakseen niiden välillä.  

Nimetyt putket Unixissa

Perinteisen nimettömän shell-putkilinjan sijaan  nimetty putki luodaan eksplisiittisesti mknodilla tai mkfifolla , ja kaksi eri prosessia voivat viitata siihen nimellä.

Voit esimerkiksi luoda putken ja asettaa gzipin pakkaamaan sen, mikä siihen menee:

mkfifo putki gzip -9 -c < putki > ulos &

Samanaikaisesti toisessa prosessissa voit suorittaa:

kissatiedosto > putki

Tämä pakkaa lähetetyt tiedot gzip:llä.

Nimetyt putket Windowsissa

Windowsissa nimettyjen putkien suunnittelu on vinoutunut asiakas-palvelin- vuorovaikutukseen , ja ne toimivat aivan kuten pistorasiat : normaalin luku- ja kirjoitustoiminnon lisäksi nimetyt putket tukevat Windowsissa nimenomaista "passiivista" tilaa palvelinsovelluksille (vertailun vuoksi : UNIX-verkkotunnuksen liitäntä ). Windows 95 tukee nimettyjä putkiasiakkaita, ja Windows NT :n haarajärjestelmät voivat toimia myös palvelimina.

Nimettyä putkea voi käyttää melko paljon kuin tiedostoa. Voit käyttää Windowsin API -toimintoja CreateFile, CloseHandle, ReadFile, WriteFile kanavan avaamiseen ja sulkemiseen, lukemiseen ja kirjoittamiseen. C - standardikirjastotoimintoja , kuten fopen , fread , fwrite ja fclose , voidaan myös käyttää, toisin kuin Windows socketit , jotka eivät käytä tavallisia verkkotiedostotoimintoja. Komentorivikäyttöliittymää ei ole (kuten Unixissa).

Nimetyt putket eivät ole olemassa pysyvästi, eikä niitä voida, toisin kuin Unix, luoda erikoistiedostoina mielivaltaiseen kirjoitettavaan tiedostojärjestelmään, vaan niillä on väliaikaiset nimet (julkaistu, kun viimeinen viittaus niihin on suljettu), jotka on varattu nimetyn pipe-tiedoston juureen. järjestelmä ( nimeltään pipe filesystem, NPFS )  ja ne on asennettu erityiseen polkuun "\\.\pipe\" (eli putkella nimeltä " foo " on koko nimi "\\.\pipe\foo"). Liukujohdoissa käytetyt anonyymit putket ovat itse asiassa nimettyjä putkia satunnaisella nimellä.

Nimetyt putket eivät yleensä ole suoraan käyttäjän ulottuvilla, mutta huomattavia poikkeuksia on. Esimerkiksi VMWaren työaseman virtualisointityökalu voi avata emuloidun sarjaportin isäntäjärjestelmään nimettynä putkena, ja Microsoftin kd - ydintason debuggeri tukee named pipes -virheenkorjausviestinä (itse asiassa, koska kd vaatii yleensä sarjaportin yhteys kohdekoneeseen). , VMware ja kd voidaan linkittää yhteen virheenkorjauslaiteajureihin samassa tietokoneessa). Molemmat ohjelmat vaativat käyttäjän määrittämään putken nimet muodossa "\\.\pipe\ name ".

Windows NT:n nimetyt putket voivat periä suojauskontekstin.

Nimetyt putket Windows-verkoissa

Named Pipes on myös SMB :n verkkoprotokolla, joka perustuu prosessien välisen viestinnän (IPC) erityisosan käyttöön. SMB:n IPC voi välittää saumattomasti ja läpinäkyvästi käyttäjän todennuskontekstin nimetyn putken toiselle puolelle. Windows NT Named Pipesin autentikoinnin periytyminen on niin läpinäkyvää käyttäjälle ja kehittäjälle, että se on lähes näkymätöntä ja usein ymmärretään väärin.

Katso myös

Linkit