Provided by: manpages-fr-dev_3.65d1p1-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.65 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> ».

Linux                                            14 juillet 2008                                        STDIN(3)