Pipe

Från Unix.se, den fria unixresursen.

Pipe:or, ibland kallat rör, är den tidigaste IPC-formen och stöds av alla Unixvarianter. För en användarprocess yttrar en pipe sig som två stycken fildeskriptorer, den första för läsning och den andra för skrivning. Data som skrivs till den andra fildeskriptorn kan läsas från den första.

Normalt utnyttjas pipe:or då en process vill kommunicera med en av sina barnprocesser. Processen skapar en pipe med systemanropet pipe() och sedan ett barn med fork(). Föräldern stänger sin läsända av pipe:an och barnet sin skrivända (eller tvärtom beroende på åt vilket håll data ska strömma) och därefter kan data skickas från den ena processen till den andra.

Pipe:or har som synes framför allt två nackdelar: den ena är att data bara kan strömma i en riktning och den andra att en pipe måste vara skapad av en för de två processer som ämnar kommunicera med varandra gemensam släkting högre upp i processhierarkin.

De flesta skal gör det möjligt att skapa en pipe mellan två program där stdout från ett program kopplas ihop med annat programs stdin. Tack vare detta är det lätt att i Unix bygga komplicerade program som en serie enklare och mer specialiserade program.

Personliga verktyg