8
votes

STDOUT est-il autre chose qu'une fenêtre de console?


2 commentaires

Sur la ligne de commande, je peux faire de type dans quelque chose comme programme.exe> ​​sortie.txt et tout sur stdout sera écrit sur sortie.txt au lieu de la console. Les scripts CGI fonctionnent de cette façon aussi; Le programme écrit le HTML sur stdout et le serveur Web fournit la sortie sur la connexion HTTP.


En outre, inetd connectera stdin et stdout sur une prise.


7 Réponses :


14
votes

Bien sûr, cela pourrait être. Je souhaite peut-être rediriger la standard dans un fichier texte, un autre processus, une prise, peu importe.

Par défaut, il s'agit de la console, mais il existe une variété de raisons de la rediriger, la plus utile (à pas avec la philosophie UNIX) étant la redirection de la production d'un programme à l'entrée d'un autre programme. Cela permet de créer de nombreux petits programmes légers qui se nourrissent et travaillent comme des parties discret d'un système plus vaste.

Fondamentalement, il s'agit simplement d'un mécanisme simple mais puissant pour le partage de données. Il est plus populaire sur * NIX Systems pour la raison pour laquelle je mentionne ci-dessus, mais cela s'applique également aux fenêtres.


0 commentaires

8
votes

sur la plupart des systèmes, vous pouvez rediriger l'entrée / sortie standard / erreur sur d'autres descripteurs ou emplacements de fichier.

Par exemple (sur UNIX): P>

echo "Hello" > bannerinput
banner < bannerinput


2 commentaires

Je ne suis pas sûr de comprendre quelle est la différence entre la méthode avec > et la méthode avec | .


Le> est un symbole de redirection, c'est comme un drain dans un évier, il prend tout et la met dans le fichier mentionné. Alors que A | est un tuyau. Il permet aux données de circuler de la production d'un processus à l'entrée d'un autre processus.



2
votes

Les deux fenêtres et Linux redirigeront stdout dans un fichier si vous exécutez le programme comme celui-ci:

my_program> quelque_file

C'est le cas le plus courant, mais de nombreux autres types de redirection sont possibles. Sur Linux, vous pouvez rediriger stdout à tout ce qui prend en charge l'interface "descripteur de fichier", telle qu'un tuyau, une prise, un fichier et divers autres choses.


0 commentaires

3
votes

Tout nombre de choses peut arriver aux trois descripteurs de fichiers standard 0, 1 et 2. Tout le monde peut lancer un nouveau processus avec les descripteurs de fichiers attachés à tout ce qu'ils aiment.

Par exemple, l'écran GNU met la sortie dans un tuyau et permet une mise en place dynamique d'une session. SSH prend la sortie et le renvoie à l'autre extrémité. Et bien sûr, tous les nombreux redirecteurs de shell utilisent régulièrement la manipulation des descripteurs de fichiers.


0 commentaires

1
votes

Un exemple simple d'un cas où on pourrait vouloir rediriger le stdout est lors du passage des informations à un autre programme. La commande UNIX / Linux PS génère une liste de processus appartenant à l'utilisateur actuel. Si cette liste était longue et que vous vouliez rechercher un processus particulier, vous pouvez entrer xxx

qui redirigerait le stdout de ps au stdin de grep truc .


0 commentaires

4
votes

Jusqu'à présent, toutes les réponses ont été dans le contexte de la chose (Shell, peu importe) qui invoque le programme. Le programme lui-même peut faire stdout autre que le terminal. La bibliothèque standard C fournit freopen qui permet au programmateur Rediriger Stdout dans n'importe quel environnement conforme. POSIX fournit un certain nombre d'autres mécanismes ( popen , fdopen , ...) qui donne au programmateur encore plus de contrôle. Je soupçonne que Windows fournit des mécanismes analogues.


0 commentaires

3
votes

pour un programme d'avoir stdout il doit être exécuté sur une implémentation hébergée (une avec un système d'exploitation), ou sur une implémentation autonome avec des extras . < P> J'ai du mal à comprendre une telle mise en œuvre sans une console, mais supposons que Mars Rover a un système d'exploitation complet et est programmé en C (ou C ++) et n'a pas cette console < / p> xxx

a peut-être envoyé le message au siège de la NASA.


0 commentaires