Aller au contenu

Flux standard

Un article de Wikipédia, l'encyclopédie libre.

En informatique, lesflux standard(standard streamen anglais) sont descanauxpourl'entrée et la sortie de donnéessur lessystèmes d'exploitationUNIXet assimilés. L'accès à ces flux est habituellement fourni par labibliothèquestdio.hdu langage de programmationC.Ces flux sont au nombre de trois, au travers desquels les programmes peuvent faire entrer ou sortir des informations.

Les flux standards: entrée, sortie, erreur.

Les utilisateurs connaissent généralement ces flux comme moyen par lequel un texte provenant d'uninput device,et un texte s'affichant sur un afficheur sont transmis. Ils sont alors essentiellement vus comme un moyen de transmettre du texte utilisateur, une séquence de caractères dans uncodage de caractèresprédéterminés tel queCP850sous DOS ouUTF-8sous Unix.

Ces flux peuvent également servir à enchaîner des programmes; la sortie de l'un servant alors d'entrée au suivant. Un exemple bien connu est l'utilisation d'un paginateur tel quemoreouless,qui donne à l'utilisateur un moyen de contrôler quelle partie de la sortie est affichée.

Bien que le contenu usuel de ces flux soit du texte, il est techniquement possible de les utiliser pour transmettre une séquence d'octets arbitraire, associée à aucune représentation textuelle. Par exemple, le logicielgzippeut recevoir un fichier non compressé sur son entrée et fournir un fichier compressé sur sa sortie.

Entrée standard

[modifier|modifier le code]

L'entrée standardest le flux d'entrée par lequel du texte ou toute autre donnée peut être entré dans un programme.Par défaut,certains programmes utilisent l'entrée standard comme source de données si aucun fichier d'entrée n'a été spécifié.

Ledescripteur de fichierde l'entrée standard est 0.

Sortie standard

[modifier|modifier le code]

Lasortie standardest le flux de sortie dans lequel les données sont écrites par le programme. Les données sont habituellement écrites à l'écran, à moins d'uneredirection.Ce flux est prévu pour être le flux de sortie par défaut.

Ledescripteur de fichierde la sortie standard est 1.

Une manière simple, bien que techniquement inexacte, de concevoir le principe de la sortie standard est de le considérer comme « le périphérique vers lequel le programme envoie les données ». Ainsi, si le périphérique en question est l'écran, « écrire dans la sortie standard » revient à « écrire sur l'écran » ou « afficher à l'écran ».

En réalité la sortie standard n'est qu'un « tuyau de données », que l'on branche sur un périphérique. Ce périphérique devient alors le périphérique de sortie standard.

Erreur standard

[modifier|modifier le code]

L'erreur standardest le flux de sortie permettant aux programmes d'émettre des messages d'erreurs et desdiagnostics.Il s'agit d'un flux distinct de la sortie standard, qui peut être redirigé indépendamment.

Ledescripteur de fichierde l'erreur standard est 2.

Lien avec les langages de programmation

[modifier|modifier le code]

Le langage C est l'un des premiers langages à avoir formalisé les flux de cette sorte. Sous son influence et celle d'Unix, d'autres langages reprennent ce découpage en flux, dont:C++,Python,Perl,Ksh,Bash,Java.

Lien avec le langage C

[modifier|modifier le code]

Le fichier d'en-tête<stdio.h>de labibliothèque standard du Cdéfinit trois pointeurs qui représentent les flux standard:

  • stdinpour l'entrée standard;
  • stdoutpour la sortie standard;
  • stderrpour l'erreur standard.

Ces pointeurs sont du typeFILE*et peuvent être utilisés directement avec la majorité des opérations pour les fichiers.

Quand un programme fonctionne dans unterminal,l'entrée standard correspond auclavier,et la sortie standard ainsi que l'erreur standard sont affichées dans ce terminal.

Du fait de l'omniprésence du C, en particulier pour la programmation des logiciels accompagnant de nombreux systèmes d'exploitation, et en raison de l'élégance et de l'efficacité de ce concept, ces flux standards sont présents ou émulés sur de nombreux systèmes d'exploitation, qu'ils soient des UNIX ou non.