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