Provided by: manpages-fr-dev_4.21.0-2_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

       Les macros stdin, stdout et stderr sont conformes au standard C99 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)

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.03                   29 décembre 2022                                        stdin(3)