winapi - Opret Windows navngivet pipe separat

Indlæg af Hanne Mølgaard Plasc

Problem



Som jeg forstår, på Windows, ejer processen, der opretter et navngivet rør, 'server' håndtaget (den ene side af røret).
Er det muligt at opdele pipe skabelse fra faktisk at bruge den (åbner den til læsning og skrivning)?


Jeg skal oprette et navngivet rør med en proces, men brug to andre processer til at åbne den til læsning og skrivning.
Men jeg er bekymret for, at når processen der skaber rørudgangen, bliver røret fjernet fra filsystemet.

Bedste reference


Navngivne rør eksisterer udelukkende på grund af den slags scenario, du taler om.


Med anonyme rør (se CreatePipe) er det nødvendigt, at der er et 'fabrik' et sted, der skaber røret, og derefter afleveres mindst en af ​​håndtagene til en 'klient' et eller andet sted (inden for samme proces eller ej). [6]


Med navngivne rør (se CreateNamedPipe) er det ikke nødvendigt at have 'fabrikken', der opretter og distribuerer håndtagene. I stedet gør 'server' -siden af ​​det nævnte rør direkte en CreateNamedPipe med det korrekte rørnavn, og 'klientens side' af det nævnte rør bruger direkte CreateFile med rørnavnet for at åbne klienten side af det navngivne rør. Hver side beskæftiger sig med sine fejlforhold på passende vis. Hvis implementeret korrekt, er der ikke behov for yderligere koordinering. [7]


Hvis din ansøgning kræver en 'fabrik' -proces for det navngivne rør (det burde ikke), så skal du finde ud af din egen måde at give håndtagene til klientprocesserne på en sådan måde, at røret ikke er ødelagt i mellemtiden. Eller du kan bruge rørnavnet i stedet for at distribuere håndtagene, men du må muligvis eksplicit koordinere mellem processerne ved hjælp af noget som en navngivet begivenhed (se CreateEvent). [8]


Hvis dette ikke svarer på dit spørgsmål, skal du opdatere dit spørgsmål med flere detaljer.