Provided by: manpages-fr_1.67.0-1_all bug

NOM

       stdin, stdout, stderr - Flux d’entrées / sorties standards.

SYNOPSIS

       #include <stdio.h>

       extern FILE *stdin;
       extern FILE *stdout;
       extern FILE *stderr;

DESCRIPTION

       Normalement, tout programme Unix démarre avec 3 flux déjà ouverts, l’un
       pour l’entrée des données, un autre pour la sortie des données,  et  un
       troisième  pour  l’affichage  des messages de diagnostique ou d’erreur.
       Ces trois flux sont typiquement attachés au terminal  de  l’utilisateur
       (voir  tty(4)), mais peuvent également être redirigés vers des fichiers
       ou vers d’autres périphériques suivant les choix du  processus  parent.
       (Voir le paragraphe "Redirection" dans sh(1)).

       Le flux d’entrée est appelé "entrée standard" (standard input), le flux
       de sortie, "sortie standard" (standard output), et le flux d’erreur est
       souvent  appelé  "erreur  standard"  (standard  error).   Ces noms sont
       abrégés dans les dénominations symboliques de  ces  fichiers  :  stdin,
       stdout, et stderr.

       Chacun  des ces symboles est une macro de stdio(3) de type pointeur sur
       un FILE, et peut être utilisé dans des fonctions  comme  fprintf(3)  ou
       fread(3).

       Comme   les   FILEs   sont   simplement  des  coquilles  entourant  les
       descripteurs de  fichiers  en  ajoutant  une  mémoire  tampon,  il  est
       également  possible  d’accéder  aux  fichiers  Unix  "bruts",  avec des
       fonctions comme read(2) ou lseek(2).   Les  descripteurs  des  fichiers
       associés aux flux stdin, stdout, et stderr sont respectivement 0, 1, et
       2.   Les  constantes  symboliques   STDIN_FILENO,   STDOUT_FILENO,   et
       STDERR_FILENO sont définies avec ces valeurs dans <unistd.h>.

       Notez  que  l’utilisation conjointe des FILEs et des descripteurs bruts
       risque de produire des résultats inattendus, et doit être  généralement
       évitée.   Pour  les  plus  masochistes  d’entre-vous, POSIX.1 décrit en
       détail, dans  son  paragraphe  8.2.3,  comment  ces  interactions  sont
       censées fonctionner.

       Une  règle générale est que les descripteurs de fichiers sont manipulés
       par le noyau, alors que stdio est simplement  une  bibliothèque.   Ceci
       signifie par exemple qu’après un exec, le processus fils hérite de tous
       les descripteurs de fichiers ouverts,  mais  que  les  flux  deviennent
       inaccessibles.

       Comme  les  symboles  stdin,  stdout,  et stderr sont définis comme des
       macros, il est interdit de leur assigner une valeur.  On peut  utiliser
       la  fonction  de  bibliothèque  freopen(3)  pour  réassigner  les fluux
       standars de manière portable.

       Les flux standards sont fermés lors d’un appel à exit(3), ou lors d’une
       fin normale de programme.

NOTES

       Le  flux  stderr n’a pas de buffer. Le flux stdout a un buffer de ligne
       lorsqu’il  est  dirigé  vers  un  terminal.   Les   lignes   partielles
       n’apparaîtront  pas  avant que fflush(3) ou exit(3) ne soient invoqués,
       ou qu’un retour-chariot soit écrit.

       Ceci a parfois des effets inattendus, principalement lors du  debugging
       des  programmes.   La  gestion  des  buffers des flux standards (et des
       autres flux également) peut être modifiée  en  utilisant  setbuf(3)  ou
       setvbuf(3).

       Remarquez  que  dans le cas où stdin est associé à un terminal, il peut
       également y avoir un buffer d’entrée dans le pilote de  terminal,  sans
       aucune  relation  avec  le  buffer  de  stdio. En fait, normalement, la
       saisie depuis un terminal est gérée avec un buffer  de  ligne  dans  le
       noyau. Cette gestion par le noyau peut être configurée en utilisant des
       appels  systèmes  comme  tcsetattr(3).  Voir   également   stty(1)   ou
       termios(3).

CONFORMITÉ

       Les  macros stdin, stdout, et stderr sont conformes au standard Ansi C,
       et celui-ci stipule également que ces trois flux doivent  être  ouverts
       au démarrage du programme.

VOIR AUSSI

       sh(1), csh(1), open(2), fopen(3), stdio(3)

TRADUCTION

       Christophe Blaess, 1998-2003.