Tux

Unix : Programmation Système

TD 5 - Les Verrous

C. Drocourt
I.U.T. Amiens
drocourt@iut-amiens.fr

Exercice 1 :

Le but
Utiliser un fichier verrou pour s’assurer de l’unicité d’un processus exécutant un programme donné, exactement comme fait le processus démon chargé des impressions sur notre système.

Le programme à rédiger
La référence du fichier verrou sera passé en argument sur la ligne de commande : si l’utilisateur oublie de donner cette référence, le processus affichera sur stderr un message approprié puis s’arrêtera avec un code de retour égal à 2.
Ensuite, le processus posera le verrou et affichera sur stdout un message du style : « Le processus 12456 a posé le verrou machin et s’exécute» , continuera son exécution pendant trentes secondes, lèvera le verrou, affichera sur stdout un message du style : « Le processus 12456 a levé le verrou machin » puis enfin s’arrêtera avec un code de retour égal à 0.
Si le processus ne peut pas poser le verrou (car un autre processus l’a déjà fait), il affichera alors un message du type  « Le processus 12456 a détecté le verrou machin et met fin à son exécution » avant de s’arrêter avec un code de retour égal à 1.

La mise au point
On lancera deux fois de suite la nouvelle commande réalisée, de préférence dans deux fenêtres différentes (ou sur deux terminaux) et on vérifiera que le deuxième processus met bien fin à ses jours après avoir découvert la présence du fichier verrou.

Exercice 2 :

On va réaliser ici un programme très simple de manipulation des verrous System V.
Le squelette du programme est le suivant :
1 – Ouverture du fichier régulier à verrouiller.
2 – Pose bloquante d’un verrou exclusif et consultatif (mode opératoire par défaut) sur tout le fichier.
3 – Attente de 40 secondes.
4 – Levée du verrou.
5 – Attente de 60 secondes.
6 – Mort du processus.
On veillera à afficher suffisamment de messages pour suivre la vie du processus (pose du verrou ,levée du verrou, erreurs éventuelles...).
On lancera plusieurs processus exécutant ce même programme dans des fenêtres distinctes.