Up Next

1  Gestionnaire de travaux

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.

Travaux en avant- et arrière-plan

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.

Exemple de session d’un gestionnaire de travaux

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
%

Exercice 1
 (Expérimentation)   Déterminez, a priori, le comportement des commandes saisies dans cette session.

Vérifiez votre réponse en saisissant les commandes dans un terminal.

Utilisation des signaux

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.


Figure 1: Liens entre les commandes de gestion de travaux et les signaux


Up Next