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>
							 |