Provided by: manpages-fr-dev_4.13-4_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 faire référence à des fichiers
       ou  à  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.  Cela
       signifie  par  exemple  qu'après  un  exec(3),  le  processus  enfant  hérite  de tous les
       descripteurs  de  fichier  ouverts,  mais  que  les  tous  les  anciens  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.  Cela  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 5.10 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier  <barbier@debian.org>,  David  Prévot  <david@tilapin.org>  et  Frédéric  Hantrais
       <fhantrais@gmail.com>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à debian-l10n-french@lists.debian.org ⟨⟩.