Un gestionnaire de travaux reprend les fonctionnalités du shell traitant de la manipulation de travaux (jobs) permettant de lancer l’exécution d’un programme, en avant-plan ou en arrière plan, d’interrompre ou suspendre un processus, de relancer son exécution, etc.
Un gestionnaire de travaux est donc chargé du traitement des signaux envoyés par les saisies des caractères tels <intr> (control-C) pour les répercuter aux processus s’exécutant en avant-plan. Un gestionnaire de travaux est également en charge de la réalisation des commandes de manipulation de travaux telles bg qui relance en arrière-plan un processus suspendu.
L’implantation d’un gestionnaire de travaux repose principalement sur le maintien d’une structure mémorisant l’ensemble des travaux, sur la redirection aux travaux de signaux générés par le système, et sur la génération de signaux pour la réalisation des commandes de manipulation de travaux.
Un gestionnaire élémentaire est capable de manipuler un travail en avant-plan et un ensemble de travaux en arrière-plan. De plus, d’autres travaux peuvent être suspendus ; leur exécution se poursuivra quand le gestionnaire de travaux les signalera à l’aide du signal SIGCONT.
La session suivante est extraite d’une session shell (tcsh) :
% xclock -update 1 ^Z [1] + Suspended xclock -update 1 % jobs [1] + Suspended xclock -update 1 % xeyes & [2] 503 % jobs [1] + Suspended xclock -update 1 [2] - Running xeyes % stop %2 [2] + Suspended (signal) xeyes % bg %1 [1] xclock -update 1 & % jobs [1] Running xclock -update 1 [2] + Suspended (signal) xeyes % fg %2 xeyes ^C % jobs [1] + Running xclock -update 1 % kill %1 % echo $SHELL /bin/tcsh [1] Terminated xclock -update 1 % jobs %
Vérifiez votre réponse en saisissant les commandes dans un terminal.
La saisie des caractères <intr> (control-C), <susp> (control-Z) ainsi que les commandes fg, bg, stop, et kill sont implantées par des générations ou redirections de signaux telles que présentées à la figure.