Ce document a été produit par HEVEA.
Votre browser peut avoir a être configuré pour afficher correctement
certains symboles.
Reportez-vous à la documentation d'HEVEA.
Licence d'informatique
Les commandes kn et pc
Examen -- Partie Unix
Septembre 2000
Documents de cours et TD autorisés
On rendra deux copies séparées pour la partie Unix et pour la
partie langage C.
La partie Unix est à rendre sur une copie de couleur
Ce document est disponible sous forme d'un fichier PostScript compressé.
Important
Plusieurs commandes ou codes Bourne-shell sont à développer. On
veillera particulièrement à détailler pour chacune des commandes,
chacun des codes, un algorithme avant de donner le code Bourne-shell
lui-même. La notation sera répartie entre ces deux composantes de vos
réponses.
1 Kill Netscape, kn
Utilisateur de Netscape, vous avez déjà rencontré le problème suivant
: lors du chargement d'une page, Netscape vous indique
Starting Java... et se fige ! Il ne reste alors plus qu'à
supprimer le processus Netscape et à relancer le navigateur.
Nous allons développer la commande kn qui va terminer
Netscape proprement. En effet, lors de son lancement, Netscape crée un
fichier de verrou destiné à éviter deux exécutions simultanées de
Netscape par un même utilisateur.
Ce fichier de nom lock est situé dans le répertoire
.netscape de l'utilisateur. C'est en fait un lien symbolique
qui mémorise quelques informations :
% ls -l ~/.netscape/lock
lrwxrwxrwx 1 phm 18 Sep 06 13:36 /users/phm/.netscape/lock -> 134.206.10.42:23171
Le numéro 134.206.10.42 est le numéro IP de la machine
sur laquelle s'exécute Netscape. Le numéro 23171 est le numéro du
processus Netscape sur cette machine.
Question 1 [Pourquoi un verrou ?]
Expliquez pourquoi est-ce que Netscape veut éviter deux
invocations simultanées par le même utilisateur.
Question 2 [kn]
Développer le commande Bourne-shell kn.
Les commandes suivantes peuvent être utiles :
-
La commande hostname -i affiche le numéro IP de la
machine locale.
- Le paramètre identifiant la machine distante dans la commande
rsh peut être précisé sous forme d'une adresse IP.
2 Planche contacte, pc
Il s'agit de générer automatiquement des pages HTML de présentations
de photographies. On va développer une commande pc qui
générera
-
une page principale de présentation sous forme de vignettes de
l'ensemble des photographies, et
- une page pour chaque photographie permettant de naviguer vers
la photographie précédente et la photographie suivante.
Les photographies sont disponibles sous forme de fichiers JPEG
(extension .jpg) dans le répertoire courant. Par exemple :
% ls *.jpg
depart.jpg descente.jpg soleil-2.jpg
picnic.jpg soleil-1.jpg sommet.jpg
%
La page principale
La page HTML principale est construite sur le modèle suivant. Par
défaut, il s'agit du fichier index.html.
% cat index.html
<HTML>
<HEAD>
<META NAME="Generator" CONTENT="pc">
<TITLE>Mon ascension de la Dent du Rocher</TITLE>
</HEAD>
<BODY>
<H1>Mon ascension de la Dent du Rocher</H1>
<CENTER>
<A HREF="depart.html"><IMG SRC="depart.jpg" HSPACE="3" VSPACE="3"
BORDER="0" ALIGN="MIDDLE" WIDTH="80"></A>
<A HREF="soleil-1.html"><IMG SRC="soleil-1.jpg" HSPACE="3" VSPACE="3"
BORDER="0" ALIGN="MIDDLE" WIDTH="80"></A>
<A HREF="soleil-2.html"><IMG SRC="soleil-2.jpg" HSPACE="3" VSPACE="3"
BORDER="0" ALIGN="MIDDLE" WIDTH="80"></A>
<A HREF="sommet.html"><IMG SRC="sommet.jpg" HSPACE="3" VSPACE="3"
BORDER="0" ALIGN="MIDDLE" WIDTH="80"></A>
<A HREF="picnic.html"><IMG SRC="picnic.jpg" HSPACE="3" VSPACE="3"
BORDER="0" ALIGN="MIDDLE" WIDTH="80"></A>
<A HREF="descente.html"><IMG SRC="descente.jpg" HSPACE="3" VSPACE="3"
BORDER="0" ALIGN="MIDDLE" HEIGHT="80"></A>
</CENTER>
<ADDRESS>Laurent Duchmol</ADDRESS>
</BODY>
</HTML>
%
Dans ce fichier on remarque le titre de la page (par défaut
Planche contacte). L'adresse de l'auteur est précisée (par
défaut elle est absente). Pour chaque photographie, on référence une
page HTML de même nom que la photographie (par exemple
soleil-1.html) et on insère une vignette de la photographie
(élément IMG). Dans cet élément IMG, les attributs
HSPACE, VSPACE, BORDER, et ALIGN
réalisent une mise en page correcte des images [Dans la
dernière spécification HTML, l'utilisation de ces attributs est
déconseillée en faveur de l'utilisation de feuilles de style.].
Enfin la valeur (par défaut 80 pixels) d'un attribut WIDTH ou
HEIGHT est précisée. Cet attribut précise la taille de la
vignette à afficher. Pour les photographies horizontales, on précise la
largeur (WIDTH) alors que pour les photographies verticales
on précise la hauteur (HEIGHT).
Les pages individuelles
Pour chaque photographie on produit une page HTML, par exemple :
% cat soleil-1.html
<HTML>
<HEAD>
<META NAME="Generator" CONTENT="pc">
<TITLE>Mon ascension de la Dent du Rocher</TITLE>
</HEAD>
<BODY>
<CENTER>
<IMG SRC="soleil-1.jpg" ALIGN="MIDDLE"</A>
<BR>
Le lever du jour
</CENTER>
<A HREF="depart.html">Precédente</A> /
<A HREF="index.html">Planche contacte</A>
/ <A HREF="soleil-2.html">Suivante</A>
<ADDRESS>Laurent Duchmol</ADDRESS>
</BODY>
</HTML>
%
Le titre de la page et l'adresse de l'auteur sont repris de la page
principale. L'image JPEG est maintenant affichée sans contraindre sa
taille. (Le marqueur BR dénote une fin de ligne.) On précise
éventuellement la légende de l'image (ici Le lever du jour).
Une seconde partie de la page permet la navigation vers la
photographie précédente (si elle existe), la page principale, et la
photographie suivante (si elle existe).
Les informations
Différentes informations sont nécessaires à la génération des ces
pages HTML. Elles sont regroupées dans deux fichiers de configuration
dans le répertoire courant : config.cfg et
images.cfg. Ces fichiers peuvent ne pas exister ; des valeurs
par défaut sont alors utilisées.
Le fichier images.cfg précise dans quel ordre les
photographies doivent être présentées. Par ailleurs la légende de
l'image peut aussi être donnée dans ce fichier. Voici un exemple de
tel fichier :
% cat image.cfg
depart.jpg Le départ à la frontale
soleil-1.jpg Le lever du jour
soleil-2.jpg Le lever du jour (2)
sommet.jpg
picnic.jpg Un pique-nique mémorable
descente.jpg
%
En l'absence d'un tel fichier, l'ensemble des fichiers JPEG du
répertoire courant tel que donné par la commande ls donne la
liste des photographies.
La légende d'une photographie qui n'est pas donnée dans le fichier de
configuration est alors recherchée dans le fichier JPEG lui-même. Un
tel fichier peut contenir des blocs de texte dits blocs COM
(commentaires/comment). La commande rdjpgcom (read JPEG COM)
affiche ces blocs. Nous décidons qu'un bloc préfixé par le mot
CAPTION: mémorise la légende de la photographie :
% rdjpgcom sommet.jpg
CREATOR: XV Version 3.12 Rev: 12/22/98 Quality = 75, Smoothing = 0
CAPTION: Enfin... l'arrivée au sommet
%
Le fichier config.cfg code les valeurs de certains
paramètres. Ces paramètres sont :
-
TITLE
- Le titre de la planche contacte
(Planche Contacte par défaut).
- ADDRESS
- Le nom de l'auteur (chaîne vide par défaut).
- VIGNETTESIZE
- La taille des vignettes (80
par défaut).
- MAINHTML
- Le nom du fichier HTML
principal (index.html par défaut).
Par exemple :
% cat config.cfg
TITLE=Mon ascension de la Dent du Rocher
ADDRESS=Laurent Duchmol
%
Les questions
Question 3 [getval]
Développer une commande Bourne-shell getval qui affiche
la valeur d'un paramètre de nom donné. Cette valeur est recherchée
dans le fichier de configuration ou la valeur par défaut est
retournée. Exemple :
% getval TITLE
Mon ascension de la Dent du Rocher
% getval MAINHTML
index.html
%
Question 4 [previous et next]
Développer une commande Bourne-shell previous qui donne
le nom de la photographie précédente. Par exemple :
% previous soleil-1
depart
% previous depart
%
(De même, on supposera que l'on dispose d'une commande
next qui affiche le nom de la photographie suivante.)
Question 5 [generateone]
Développer une commande generateone qui génère la page
HTML d'une photographie donnée en paramètre.
Question 6 [generateonevignette]
Développer une commande Bourne-shell generateonevignette
qui affiche le code HTML d'une vignette dans le fichier principal.
Par exemple :
% generateonevignette depart
<A HREF="depart.html"><IMG SRC="depart.jpg" HSPACE="3" VSPACE="3"
BORDER="0" ALIGN="MIDDLE" WIDTH="80"></A>
%
Question 7 [pc]
Développer la commande Bourne-shell pc.
Les outils
-
L'option -verbose de la commande rdjpgcom
affiche la taille de l'image (ici 570 pixels de large sur 309 de
haut, c'est donc une photographie horizontale):
% rdjpgcom -verbose sommet.jpg
CREATOR: XV Version 3.12 Rev: 12/22/98 Quality = 75, Smoothing = 0
CAPTION: Enfin... l'arrivée au sommet
JPEG image is 570w * 309h, 3 color components, 8 bits per sample
JPEG process: Baseline
%
Ce document a été traduit de LATEX par
HEVEA.