Département INFormatique 
 CSC4508/M2 : Concepts des systèmes d'exploitation et mise en œuvre sous Unix


   Évaluation



TÉLÉCOM SudParis 2ème année

TP Noté CSC4508/M2 du 20/06/14

Corrigés

Modalités

Durée : 1 heure 30

Tous documents autorisés.

Les questions sont indépendantes les unes des autres. Aussi, n'hésitez pas à lire tout le sujet avant de commencer pour déterminer l'ordre dans lequel vous souhaitez traiter les questions.

Le barème est donné à titre indicatif des poids entre les différentes questions.

La « livraison » de votre travail en fin de TP noté se fera par remontée sous Moodle (rubrique « TP noté de 3 heures ») du fichier d'extension tgz constitué de la manière suivante :
cd votreRepertoireDeTravailPourCSC4508M2
tar cvfz ${USER}.tgz ${USER}_TPNote2014Session2
NB: Si vous êtes plus à l'aise en écrivant vos réponses sur une copie plutôt qu'en les tapant sur ordinateur, vous pouvez rendre également une copie papier à l'enseignant qui vous surveille. En fin d'épreuve, même si vous ne rendez pas de copie, passez voir l'enseignant qui vous surveille pour lui signaler explicitement que vous ne rendez pas de copie.

Préparation

	    cd votreRepertoireDeTravailPourCSC4508M2
	    wget http://www-inf.it-sudparis.eu/COURS/CSC4508/Current/Documents/ExoCoursSys/TPNote2014Session2/WWW/tPNote2014Session2.tgz
	    tar xvfz tPNote2014Session2.tgz
	    mv TPNote2014Session2 ${USER}_TPNote2014Session2
	    cd ${USER}_TPNote2014Session2
	  

Question 1 : des chiffres et des lettres

On souhaite développer une application chiffres_lettres.c qui analyse les caractères saisi par l'utilisateur. Pour cela, on souhaite que le programme effectue les opérations suivantes:

  • lire le flux de caractères arrivant sur l'entrée standard
  • séparer les chiffres et les lettres
  • effectuer l'opération appropriée en fonction du type de caractère, à savoir :
    • sommer les chiffres
    • réaliser un spectre de fréquence pour les lettres
  • afficher le résultat obtenu

Voici un exemple d'exécution du programme:

$ echo "bonjour 123" |./chiffres_lettres
Somme des chiffres: 6
La lettre la plus frequente est : o

Pour cela, le programme est composé de trois processus entités :
  • un distributeur (en charge de la répartition des caractères) ;
  • un additionneur (opérant sur les chiffres) ;
  • un compteur (opérant sur les lettres).
Un squelette de programme vous est fourni (voir le fichier chiffres_lettres.c). Ce squelette comporte la création des processus ainsi que le traiement des données, mais il manque les communications entre les processus. Modifiez ce squelette chiffres_lettres.c afin de mettre en oeuvre les communications entre les processus de façon à ce que le programme fonctionne correctement.

Question 2 : find

On souhaite disposer d'une application permettant de retrouver un fichier dans une arborescence. Il s'agit, en fait, de développer une application faisant l'équivalent de la commande :

$ find . -name <fichier>

Question 2.1

On souhaite dans un premier temps se contenter de chercher le fichier dans le répertoire courant (sans prendre en compte le contenu des sous-répertoires).

Compléter le programme Q2/Q2.1/my_find.c afin qu'il puisse détecter si le répertoire courant contient le fichier recherché.

Question 2.2

On souhaite maintenant que le programme cherche le fichier dans le répertoire courant ainsi que ses sous-répertoire. Voici un exemple d'exécution du programme souhaité:

$ ./my_find toto.c
./toto.c
./src/utils/test/toto.c
./exemples/C/toto.c

Compléter le programme Q2/Q2.2/my_find.c afin qu'il ait le comportement souhaité.





Page mise à jour le 17 juin 2014