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.