Man page - stdin(3)

Packages contains this manual

Available languages:

en fr es pl ja ru ro zh_TW zh_CN de

Manual

stdin

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
STANDARDS
HISTORIQUE
NOTES
VOIR AUSSI
TRADUCTION

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 .