Provided by: manpages-fr-dev_3.57d1p1-1_all bug

NOM

       stdin, stdout, stderr - Flux d'entrées-sorties standard

SYNOPSIS

       #include <stdio.h>

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

DESCRIPTION

       Normalement,  tout programme UNIX démarre avec trois 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  diagnostic ou d'erreur. Ces trois flux sont typiquement attachés au terminal
       de l'utilisateur (consultez 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  de  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 FILE 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) et lseek(2).

       Au démarrage du programme, les descripteurs de fichier associés aux flux stdin, stdout  et
       stderr  valent  respectivement  0,  1  et  2.  Les  constantes  symboliques  STDIN_FILENO,
       STDOUT_FILENO, et STDERR_FILENO sont définies avec ces valeurs dans <unistd.h>  (appliquer
       freopen(3)  sur l'un de ces flux peut modifier le numéro de descripteur de fichier associé
       au flux).

       Notez que l'utilisation conjointe des FILE 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
       fichier sont manipulés par le noyau, alors que stdio est simplement une bibliothèque. Ceci
       signifie  par  exemple  qu'après  un  exec(3),  le  processus  fils  hérite  de  tous  les
       descripteurs de fichier ouverts, mais que les flux deviennent inaccessibles.

       Les symboles stdin, stdout et stderr étant définis comme des macros, il  est  interdit  de
       leur  assigner  une  valeur.  On  peut  utiliser  la  fonction de bibliothèque freopen(3),
       spécialement conçue pour réassigner stdin, stdout et stderr. Les flux standard sont fermés
       lors d'un appel à exit(3) ou lors d'une fin normale de programme.

CONFORMITÉ

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

NOTES

       Le flux stderr n'a pas de tampon. Le flux stdout a un tampon 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ées, ou qu'un  retour-chariot  soit  écrit.  Ceci  a  parfois  des  effets
       inattendus,  principalement  lors  du  débogage des programmes. La gestion des tampons des
       flux standard (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ée à un terminal, il peut
       également y avoir un tampon d'entrée dans le pilote de terminal, sans aucune relation avec
       le  tampon de stdio (en effet, normalement, la saisie depuis un terminal est gérée avec un
       tampon de ligne dans le noyau). Cette  gestion  par  le  noyau  peut  être  configurée  en
       utilisant   des   appels  système  comme  tcsetattr(3).  Consultez  également  stty(1)  et
       termios(3).

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de la publication 3.57 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <http://po4a.alioth.debian.org/>  par l'équipe de traduction francophone au sein du projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe   Blaess   <http://www.blaess.fr/christophe/>   (1996-2003),    Alain    Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Nicolas  François  et  l'équipe francophone de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>   ou   par   un  rapport  de  bogue  sur  le  paquet
       manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document  en  utilisant  la
       commande « man -L C <section> <page_de_man> ».