Le but de ce TP est d'apprendre à utiliser
Sous Linux, stdin
est le flux d'entrée standard. Cela accepte le texte comme entrée. La sortie texte de la commande au shell est transmise via le flux stdout
(sortie standard). Les messages d'erreur de la commande sont envoyés via le flux stderr
(erreur standard).
Vous pouvez donc voir qu'il existe deux flux de sortie, stdout
et stderr
, et un flux d'entrée, stdin
. Étant donné que les messages d'erreur et la sortie normale ont chacun leur propre conduit pour les acheminer vers la fenêtre du terminal, ils peuvent être traités indépendamment les uns des autres.
Les flux sous Linux, comme presque tout le reste, sont traités comme s'ils étaient des fichiers. Vous pouvez lire du texte à partir d'un fichier et vous pouvez écrire du texte dans un fichier. Ces deux actions impliquent un flux de données. Ainsi, le concept de traitement d'un flux de données en tant que fichier n'est pas si exagéré.
Ces valeurs sont toujours utilisées pour stdin
, stdout
et stderr
:
L'appel système dup() crée une copie d'un descripteur de fichier.
L'appel système dup2() est similaire à dup() mais la différence fondamentale entre eux est qu'au lieu d'utiliser le descripteur de fichier inutilisé portant le numéro le plus bas, il utilise le numéro de descripteur spécifié par l'utilisateur.
Quand vous voulez rediriger stdout vers un fichier vous pouvez le faire en ouvrant un fichier à l'aide de l'appel système open(), puis en dupliquant ce descripteur de fichier sur stdout en utilisant dup2(), de sorte que la sortie standard soit maintenant représentée par le fichier ouvert et non par la console.