Unix Fonctionnement canonique d’un shell

Cours Unix Fonctionnement canonique d’un shell, tutoriel & guide de travaux pratiques en pdf.

Fonctionnement canonique d’un shell

Un interpréteur de commandes, utilisé de façon interactive, fonctionne en boucle infinie, selon le shéma suivant : 1. Lecture ligne de commandes 2. Interprétation (substitutions…) 3. Clonage du shell avec fork 4. Chez le père :  attente du fils avec wait puis retour en 1     Chez le fils :  changement de code avec exec puis mort.

Le mécanisme du fork/exec

L’association du fork et de l’exec permet de créer son propre shell : le processus père saisie la commande de l’utilisateur et délègue à son fils l’exécution de la commande.

Les signaux

Les signaux disponibles

Sur un système donné, on dispose de NSIG signaux numérotés de 1 à NSIG. La constante NSIG, ainsi que les ifférents signaux et les prototypes des fonctions qui les manipulent, sont définis dans le fichier <signal.h>.
$grep SIGHUP /usr/include/signal.h #define SIGHUP 1 /* Fin du processus leader de session */ $

Le comportement à la réception d’un signal

Terminologie des signaux

Un signal envoyé par le noyau ou par un autre processus est un signal pendant : cet envoi est mémorisé dans le BCP du processus.
Un signal est délivré (ou pris en compte) lorsque le processus concerné réalise l’action qui lui est associée dans son BCP , c’est à dire, au choix :  l’action par défaut : en général la mort du processus  ignorer le signal  l’action définie par l’utilisateur (handler) : le signal est dit capté.
Un signal peut également être masqué (ou bloqué) : sa prise en compte sera différée jusqu’à ce que le signal ne soit plus masqué.

Limites des signaux

LIRE AUSSI :  Cours UNIX manipulations de répertoires

Lorsqu’un processus est en sommeil et qu’il reçoit plusieurs signaux :  Aucune mémorisation du nombre de signaux reçus : 10 signaux SIGINT ≡ 1 signal SIGINT.  Aucune mémorisation de la  date de réception d’un signal : les signaux seront traités ultérieurement par ordre de numéro.  Aucun moyen de connaître le PID du processus émetteur du signal.

La délivrance des signaux

Attention, les signaux sont asynchrones : la délivrance des signaux non masqués a lieu un « certain temps » après leur envoi, quand le processus récepteur passe de l’état actif noyau à l’état actif utilisateur.  Cela explique pourquoi un processus n’est pas nterruptible lorsqu’il exécute un appel système.

……

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *