Ai tre file descriptor standard (vedi sez. 6.1.2) aperti per ogni processo, corrispondono altrettanti
stream, che rappresentano i canali standard di input/output prestabiliti; anche questi tre
stream sono identificabili attraverso dei nomi simbolici definiti nell'header stdio.h che
sono:
FILE *stdinLo standard input cioè lo stream da cui il processo riceve ordinariamente i
dati in ingresso. Normalmente è associato dalla shell all'input del terminale
e prende i caratteri dalla tastiera.
FILE *stdoutLo standard output cioè lo stream su cui il processo invia ordinariamente i
dati in uscita. Normalmente è associato dalla shell all'output del terminale e
scrive sullo schermo.
FILE *stderrLo standard error cioè lo stream su cui il processo è supposto inviare i
messaggi di errore. Normalmente anch'esso è associato dalla shell all'output
del terminale e scrive sullo schermo.
Nelle glibc stdin, stdout e stderr sono effettivamente tre variabili di tipo FILE * che possono
essere usate come tutte le altre, ad esempio si può effettuare una redirezione dell'output di un
programma con il semplice codice:
ma in altri sistemi queste variabili possono essere definite da
macro, e se si hanno problemi di portabilità e si vuole essere sicuri, diventa opportuno usare la
funzione freopen.