Aller au contenu

La substitution de processus#


Utiliser exec pour remplacer le processus courant#

  • La commande exec permet également de lancer un programme définitivement, en remplacement du processus actuel
  • Le processus avec le même PID continue, mais le shell n'est plus en exécution.
  • Cela est utile pour lancer un programme de manière finale dans un script shell, car il n'y a pas de retour au shell.
  • Ex: dans des scripts d'initialisation où le script doit terminer par l'exécution d'un daemon.
  • Ex: en utilisant la commande exec /bin/ls, le shell courant est remplacé par le programme /bin/ls.

Substitution de commande par un flux#

La substitution de processus envoie la sortie d'un ou plusieurs processus dans l'entrée standard stdin d'un autre processus.

Syntaxe#

>(liste_de_commandes)
<(liste_de_commandes)

Exemple#

comm <(ls -l) <(ls -al)
diff <(ls $premier_repertoire) <(ls $deuxieme_repertoire)
cat <(ls -l)  # idem à: ls -l | cat
sort -k 9 <(ls -l /bin) <(ls -l /usr/bin) <(ls -l /usr/X11R6/bin)

Subtitution de commande par un flux (suite)#

La substitution de processus utilise les fichiers /dev/fd/<n> pour envoyer le résultat des processus entre parenthèses vers un autre processus.

bash$ echo >(true)
/dev/fd/63

bash$ echo <(true)
/dev/fd/63