Standaard stromen

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Standaard stromen voor invoer, uitvoer en fouten

Standaard stromen zijn vooraf gedefinieerde invoer- en uitvoerkanalen (ook streams genoemd) tussen een computerprogramma en zijn omgeving. Standaard stromen werden voor het eerst gedefinieerd in UNIX als abstractie voor een grote variëteit aan randapparaten die in oudere systemen elk hun eigen interface hadden en onderling niet uitwisselbaar waren. Omdat de ontwikkeling van C nauw verweven is met die van UNIX zijn de definities die deze taal gebruikt de gebruikelijke aanduidingen geworden. De drie stromen die C definieert zijn stdin ("standard input"), stdout ("standard output") en stderr ("standard error").

stdin
Invoer. Van oorsprong bijvoorbeeld een TTY (teletype) zijn, tegenwoordig vaker een PTY, maar stdin kan ook verwijzen naar een bestand, een pipe (dat wil zeggen: de uitvoer van een ander proces) of een, soms virtueel, randapparaat (/dev/random, bijvoorbeeld).
stdout
Uitvoer. Ook hier kunnen de gegevens naar een (geëmuleerde) TTY worden gestuurd, maar ook naar een bestand, een pipe of een randapparaat zoals een printer of de bitbucket (/dev/null).
stderr
Foutboodschappen. Om te voorkomen dat diagnostische meldingen worden vermengd met de reguliere uitvoer is een extra uitvoerkanaal beschikbaar. Ook hier kan de uitvoer naar TTY, een pipe of bestand of een randapparaat worden gestuurd. De C en POSIX-standaarden eisen dat deze stroom ongebufferd is, zodat uitvoer onmiddellijk wordt geschreven en niet word opgespaard zodat, mocht er een crash plaatsvinden, de meest recente diagnotische boodschappen beschikbaar zijn.

C[bewerken]

In C zijn deze drie onderdeel van de standard library, sinds de oorspronkelijke versie van Brian Kernighan en Dennis Ritchie, die overigens ook aan de wieg van UNIX stond. Ze zijn gedefineerd in stdio.h als opaque file-handle, een implementatie-afhankelijke structuur (opaque betekent "ondoorzichtig", de programmeur kan er niet "in kijken") met gegevens omtrent de stroom. De applicatie hoeft hierdoor geen expliciete kennis te hebben van de onderliggende hard- en software. Dit vereenvoudigt niet alleen het programmeren, maar maakt de resulterende programmas ook flexibeler en beter te testen.

Microsoft[bewerken]

In DOS werden automatisch 5 van deze zogenaamde handles gedefinieerd, alsof er 5 systeem devices geopend werden. Behalve het standaard drietal zijn dat:

Stdaux = auxilary

Stdprn = printer, LPT1