Aller au contenu

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#