Aller au contenu

Gestion des flux (avec exec)#


Le principe de exec#

  • Le builtin exec est une commande interne au shell qui modifie l'environnement d'exécution d'un processus.
  • exec peut remplacer le shell courant par un nouveau programme.
  • exec peut aussi être utilisé pour manipuler les descripteurs de fichiers du processus courant.

Rediriger les descripteurs de fichiers#

  • exec permet de rediriger les entrées/sorties de manière permanente pour le reste du script.
  • Par exemple, exec > outfile redirigera tout le stdout du shell vers outfile.
  • Pour effectuer une opération similaire à dup2 (C) avec exec, vous pouvez utiliser la syntaxe exec 3<&4
    • Ici le descripteur de fichier 3 est dupliqué à partir du descripteur de fichier 4. Ainsi, quand le processus lit à partir du descripteur de fichier 3, il lira en fait à partir du descripteur de fichier 4.
    • Notez que cela ne ferme pas automatiquement le descripteur de fichier 4.

Ouvrir et fermer les descripteurs de fichiers#

  • La commande exec peut également ouvrir de nouveaux fichiers (et donc créer de nouveaux descripteurs).
  • Cela est particulièrement utile pour gérer plusieurs fichiers ou flux de données simultanément.
  • La commande exec 3< myfile ouvrira le fichier myfile sur le descripteur de fichier 3, qui peut être lu plus tard dans le script.
  • Pour fermer un descripteur de fichier avec exec, vous pouvez utiliser la syntaxe exec 3<&-