Les co-processus#
Processus en arrière-plan#
Lance la commande en tant que processus d'arrière-plan. Le contrôle revient immédiatement au shell.
command &
La variable spéciale $! contient l'ID du processus du dernier travail en arrière-plan qui a été lancé. Vous pouvez l'enregistrer et examiner le processus plus tard (ps -p $bgpid) ou lui envoyer un signal (kill -HUP $bgpid).
bgpid=$!
Exemple:
proc1 & proc2 & proc3 &
Les co-process (spécifiques à ksh)#
Les coprocessus permettent de lancer un processus distinct qui s'exécute de manière asynchrone, mais dont les stdin/stdout sont connectés au script parent via des tuyaux.
Démarrer un coprocessus avec un pipe à 2 voies vers celui-ci
command |&
Lecture du pipe vers le coprocess, au lieu de l'entrée standard
read -p var
Écriture dans le pipe connecté au coprocesseur, au lieu de la sortie standard
print -p args
Les co-process (spécifiques à ksh) (suite)#
Les coprocessus multiples peuvent être gérés en déplaçant les descripteurs de fichiers spéciaux connectés aux pipes vers l'entrée et la sortie standard, et ou vers des descripteurs de fichiers explicitement spécifiés.
The input from the coprocess is moved to standard input
exec <&p
The output from the coprocess is moved to standard output
exec >&p
Note: en bash command1 |& command2
équivaut à command1 2>&1 | command2
Références#
- StackExchange: How do you use the command coproc in various shells?
- Bash Hackers Wiki: The coproc keyword
- Dartmouth College: Coprocesses and Background jobs