Un programme qui écrit sur "stdout" écrit-il dans un fichier? l'écran? Je ne comprends pas ce que cela signifie d'écrire sur stdout.
Cela signifie que vous imprimez une sortie sur le périphérique de sortie principal pour la session ... quelle qu'elle soit. La console de l'utilisateur, une session tty, un fichier ou qui sait quoi. La nature de ce périphérique dépend de la manière dont le programme est exécuté et de son emplacement.
La commande suivante écrira sur le périphérique de sortie standard (stdout) ...
printf( "hello world\n" );
Ce qui est juste une autre façon, en substance, de faire cela ...
fprintf( stdout, "hello world\n" );
Dans ce cas, stdout
est un pointeur sur un flux FILE
qui représente le périphérique de sortie par défaut de l'application. Vous pouvez aussi utiliser
fprintf( stderr, "that didn't go well\n" );
dans ce cas, vous enverriez la sortie vers le périphérique de sortie d'erreur standard de l'application qui peut être identique ou non à stdout
- comme avec stdout
, stderr
est un pointeur sur un flux FILE
représentant le périphérique de sortie par défaut messages d'erreur.
Ça dépend.
Lorsque vous vous engagez à envoyer la sortie à stdout
, vous laissez essentiellement le soin à l'utilisateur de décider où cette sortie doit aller.
Si vous utilisez printf(...)
(ou l'équivalent fprintf(stdout, ...)
), vous envoyez le résultat à stdout
, mais le résultat final peut dépendre de la façon dont j'appelle votre programme.
Si je lance votre programme depuis ma console comme ceci, je verrai la sortie sur ma console:
$ prog
Hello, World! # <-- output is here on my console
Cependant, je pourrais lancer le programme comme ceci, ne produisant aucune sortie sur la console:
$ prog > hello.txt
mais j'aurais maintenant un fichier "hello.txt" avec le texte "Hello, World!" à l'intérieur, grâce à la fonctionnalité de redirection du shell.
Qui sait - je pourrais même brancher un autre appareil et la sortie pourrait y aller. Le fait est que lorsque vous décidez d’imprimer sur stdout
(par exemple, en utilisant printf()
), vous ne saurez pas exactement où il va avant que vous ne voyiez comment le processus est lancé ou utilisé.
stdout
signifie flux de sortie standard et il s’agit d’un flux qui est disponible pour votre programme par le système d’exploitation lui-même. Il est déjà disponible pour votre programme depuis le début avec stdin
et stderr
.
Ce qu'ils indiquent (ou à partir de) peut être n'importe quoi, en réalité, le flux fournit simplement à votre programme un objet qui peut être utilisé comme interface pour envoyer ou récupérer des données. Par défaut, il s’agit généralement du terminal, mais il peut être redirigé où vous le souhaitez: d’un fichier, d’un tuyau à un autre processus, etc.
stdout est le flux de fichier de sortie standard. De toute évidence, c'est le premier et le pointeur par défaut sur la sortie est l'écran, mais vous pouvez le diriger vers un fichier comme vous le souhaitez!
Lisez s'il vous plaît:
http://www.cplusplus.com/reference/cstdio/stdout/
C++ est très similaire au C, cependant, orienté objet.
stdout
est le flux de sortie standard sous UNIX. Voir http://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#Standard-Streams . Lors de l'exécution dans un terminal, vous verrez les données écrites dans stdout
le terminal et vous pouvez le rediriger comme bon vous semble.