stdin(3) Library Functions Manual stdin(3) NOM stdin, stdout, stderr - Flux d'entrees-sorties standard BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; DESCRIPTION Normalement, tout programme UNIX demarre avec trois flux deja ouverts, l'un pour l'entree des donnees, un autre pour la sortie des donnees et un troisieme pour l'affichage des messages de diagnostic ou d'erreur. Ces trois flux sont typiquement attaches au terminal de l'utilisateur (consultez tty(4)), mais peuvent egalement faire reference a des fichiers ou a d'autres peripheriques suivant les choix du processus parent (voir le paragraphe << Redirection >> dans sh(1)). Le flux d'entree est appele << entree standard >> (standard input), le flux de sortie << sortie standard >> (standard output) et le flux d'erreur est souvent appele << erreur standard >> (standard error). Ces noms sont abreges dans les denominations 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 etre utilise dans des fonctions comme fprintf(3) ou fread(3). Comme les FILE sont simplement des coquilles entourant les descripteurs de fichiers en ajoutant une memoire tampon, il est egalement possible d'acceder aux fichiers UNIX << bruts >> avec des fonctions comme read(2) et lseek(2). Au demarrage du programme, les descripteurs de fichier associes aux flux stdin, stdout et stderr valent respectivement 0, 1 et 2. Les constantes symboliques STDIN_FILENO, STDOUT_FILENO et STDERR_FILENO sont definies avec ces valeurs dans (appliquer freopen(3) sur l'un de ces flux peut modifier le numero de descripteur de fichier associe au flux). Notez que l'utilisation conjointe des FILE et des descripteurs bruts risque de produire des resultats inattendus, et doit etre generalement evitee. Pour les plus masochistes d'entre vous, POSIX.1 decrit en detail, dans son paragraphe 8.2.3, comment ces interactions sont censees fonctionner. Une regle generale est que les descripteurs de fichier sont manipules par le noyau alors que stdio est simplement une bibliotheque. Cela signifie par exemple qu'apres un exec(3), le processus enfant herite de tous les descripteurs de fichier ouverts, mais que les tous les anciens flux deviennent inaccessibles. Les symboles stdin, stdout et stderr etant definis comme des macros, il est interdit de leur assigner une valeur. On peut utiliser la fonction de bibliotheque freopen(3) specialement concue pour reassigner stdin, stdout et stderr. Les flux standard sont fermes lors d'un appel a exit(3) ou lors d'une fin normale de programme. STANDARDS C11, POSIX.1-2008. The standards also stipulate that these three streams shall be open at program startup. 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 dirige vers un terminal. Les lignes partielles n'apparaitront pas avant que fflush(3) ou exit(3) ne soient invoquees ou qu'un retour-chariot soit ecrit. Cela a parfois des effets inattendus, principalement lors du debogage des programmes. La gestion des tampons des flux standard (et des autres flux egalement) peut etre modifiee en utilisant setbuf(3) ou setvbuf(3). Remarquez que dans le cas ou stdin est associee a un terminal, il peut egalement y avoir un tampon d'entree dans le pilote de terminal sans aucune relation avec le tampon de stdio (en effet, normalement, la saisie depuis un terminal est geree avec un tampon de ligne dans le noyau). Cette gestion par le noyau peut etre configuree en utilisant des appels systeme comme tcsetattr(3). Consultez egalement stty(1) et termios(3). VOIR AUSSI csh(1), sh(1), open(2), fopen(3), stdio(3) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Frederic Hantrais Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 stdin(3)