91 lines
3.3 KiB
Plaintext
91 lines
3.3 KiB
Plaintext
|
EXEMPLES ET EXERCICES
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1. adresses sites
|
|||
|
|
|||
|
Quelques adresses utiles :
|
|||
|
|
|||
|
http://www.rubycentral.com/book/ // le livre de reference
|
|||
|
http://www.rubycentral.com/ref/ // ref. classes avec listes des fonctions par classe
|
|||
|
http://www.ruby-doc.org/core/ // voir les classes IO File File::Stat Dir FileTest Process
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2. exemples de scripts
|
|||
|
|
|||
|
NB: tester d'abord les exemples avant de faire les exercices propos<6F>s.
|
|||
|
|
|||
|
|
|||
|
A. manipulation du SGF
|
|||
|
======================
|
|||
|
|
|||
|
Bcp de classes participent <20> la manipulation des objets "syst<73>me" : File, Dir, IO, etc...
|
|||
|
|
|||
|
|
|||
|
- exemple 1 : cr<63>ation d'un fichier et remplissage <20> partir d'infos saisies au clavier (testSgf_1.rb)
|
|||
|
|
|||
|
- exemple 2 : ouverture et affichage des informations sur un fichier (stat) (testSgf_2.rb)
|
|||
|
|
|||
|
- exemple 3 : ouverture d'un fichier avec v<>rification existence et recherche des lignes ou
|
|||
|
apparait un motif donne .
|
|||
|
Le nom du fichier et le motif sont pass<73>s en param<61>tres au script (testSgf_3.rb)
|
|||
|
|
|||
|
- exemple 4 : afficher la liste des fichiers d'un repertoire donne (testSgf_4.rb)
|
|||
|
|
|||
|
|
|||
|
- Exercices <20> faire
|
|||
|
|
|||
|
- Exercice 1 : <20>crire un script < histo > qui construit et affiche l'histogramme de repartition
|
|||
|
par taille des fichiers du repertoire <rep>.
|
|||
|
Nous aimerions conna<6E>tre la taille totale de fichiers examin<69>s, le nombre total de ces derniers et le nombre total de blocs.
|
|||
|
Ainsi que la taille moyenne d'un fichier.
|
|||
|
On definit <nbclasses> classes de repartition de taille identique <20> <taille>
|
|||
|
|
|||
|
usage : histo.rb <repertoire > <nombre_de_classe> <taille_de_classe>
|
|||
|
|
|||
|
- Exercice 2 : <20>crire un script <cherche> qui recherche tous les fichiers contenant un motif donn<6E>.
|
|||
|
On affichera le nom du fichier et la ligne contenant le motif. Attention,
|
|||
|
si plusieurs lignes du m<>me fichier contiennent <motif>, on n'affichera qu'une fois
|
|||
|
le chemin absolu du fichier.
|
|||
|
|
|||
|
usage : cherche <motif> [filtre] [path]
|
|||
|
|
|||
|
|
|||
|
B. manipulation de processus, signaux
|
|||
|
=====================================
|
|||
|
|
|||
|
- exemple 1 : cr<63>ation d'un processus fils (testProc_1.rb)
|
|||
|
Si on comment les lignes if avec les exit, on obtient ceci :
|
|||
|
|
|||
|
Pere 28716 Grand pere 28715 pid fils1 : nil pid fils2 : nil
|
|||
|
|
|||
|
Pere 28715 Grand pere 28713 pid fils1 : nil pid fils2 : 28716
|
|||
|
|
|||
|
Pere 28717 Grand pere 28713 pid fils1 : 28715 pid fils2 : nil
|
|||
|
|
|||
|
Pere 28713 Grand pere 22590 pid fils1 : 28715 pid fils2 : 28717
|
|||
|
|
|||
|
Donc le petit fils ne connait pas les autres
|
|||
|
Le fils 2 se connait
|
|||
|
Le fils 1 aussi
|
|||
|
Et le p<>re connait les fils 1 et 2
|
|||
|
|
|||
|
- exemple 2 : communication entre un proc. p<>re et un proc. fils avec un tube (testProc_2.rb)
|
|||
|
|
|||
|
- exemple 3 : communication entre un proc. p<>re et un proc. fils avec un tube (2) (testProc_3.rb)
|
|||
|
Si on enl<6E>ve le wr.close du Process.fork, alors le programme bloque, car quelqu'un utilise toujours le WR !
|
|||
|
|
|||
|
- exemple 4 : chronom<6F>tre (testSig_1.rb)
|
|||
|
|
|||
|
|
|||
|
- Exercices <20> faire
|
|||
|
|
|||
|
- Exercice 1 : <20>crire un script qui ex<65>cute la commande "ls -l" en affichant le r<>sultat
|
|||
|
en majuscule. On utilisera 2 processus et un tube pour communiquer.
|
|||
|
Le proc. fils ex<65>cute la commande et le proc. p<>re affiche en majuscule.
|
|||
|
|
|||
|
|
|||
|
NB: pour passer en mode debug, lancer : ruby -r debug ./testFile.rb <liste_arg>
|