Provided by: manpages-fr-dev_4.26.0-1_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

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.

STANDARDS

       C11, POSIX.1-2008.

       Les « standards » stipulent également que ces trois flux doivent être ouverts au démarrage du programme.

HISTORIQUE

       C89, POSIX.1-2001.

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)

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 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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                           stdin(3)