Exécution de commandes en parallèle

Il faut utiliser la macro WIFISIGNALED sur l'entier status passé par référence à wait.

On pourra tester cette nouvelle version de parexec en lançant ./parexec ./compte 2 16 16 16 16 et en tuant le premier fils par un SIGTERM grâce au programme kill(1).

Si parexec quitte tout de suite au lieu d'attendre que tous ses fils se terminent, ceux-ci continuent leur exécution en arrière-plan alors que le shell reprend la main. Les instances de compte orphelines ont été adoptés par le processus init (de pid 1) comme on peut s'en rendre compte par un ps -fa. Une manière de les tuer est d'utiliser la commande killall(1).

Correction de parexec.

Une alternative pour tester parexec est de concevoir un petit programme bugif qui, quand on lui passe un certain argument, se termine anormalement (par exemple par un appel à abort(3) ou bien en exécutant 1/0) et se termine normalement sinon.

Correction de bugif.


Antoine Miné