GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie II 2014.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Chapitre annexe. Récursivité
Initiation à la programmation et algorithmique cours 4
Portée des variables VBA & Excel
DTD Sylvain Salvati
Synchronisation des processus père - fils
1/22 Présentation Dechou & CO Développement dun programme de gestion dascenseurs Plan d'assurance qualité
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
C.
Outils de développements
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
FLSI602 Génie Informatique et Réseaux
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Initiation à la programmation et algorithmique cours 3
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,
Systèmes d'exploitations Les redirections d'entrées/sorties GRARI Mounir ESTO Année 2011.
Principes de programmation (suite)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Sous-programmes Concepts généraux Passage de paramètres Fonctions
CPI/BTS 2 Programmation Web Introduction au PHP
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)
Chapitre IV LES STRUCTURES SIMPLES. Plan I- Les entrées II- Laffectation III- Les sorties.
Démarche de résolution de problèmes
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
Version 2007Administration système Linux Francis Rogard 1 SYSTEME DEXPLOITATION LINUX La ligne de commandes.
CHAINE DE CARACTERES : Définition :
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 4 Syntaxe des commandes, documentation standard,
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Exemples de programmation Bourne shell et nawk(1)
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Programmation nawk(1)
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie I 2014.
Systèmes dexploitation et programmation de systèmes -GPA435- Cours #5: Éléments de programmation (Partie 2) Enseignant: Jean-Philippe Roberge Jean-Philippe.
Systèmes d’exploitation et programmation de systèmes -GPA435- Cours #4: Éléments de programmation (Partie 1) Enseignant: Jean-Philippe.
Programmation concurrente
Web dynamique PhP + MySQL AYARI Mejdi 2006
Chapitre 9 Les sous-programmes.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Répéter dans un programme avec une Instruction itérative
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 6 Substitution: variables et commandes,
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 8 Filtres UNIX.
Animateur : Med HAIJOUBI
Utilisation avancée de linux
Structures des données
Shell Equipe ID Bioinformatics Training Course June 2014.
PHP 5° PARTIE : LES COOKIES
SIF-1053 Architecture des ordinateurs
Scripts shell intro Un script bash est un fichier contenant une suite de commandes shell, exécutables par l'interpréteur (ici le programme /bin/bash),
Introduction au langage C Fonctions et Procédures
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Elaboré par Ahmed BESSAIDI
Patricia Renault UPMC 2005/2006
 Systèmes d’exploitation et programmation de systèmes -GPA435- Cours #6: Éléments de programmation (Partie 3) Enseignant: Jean-Philippe Roberge Jean-Philippe.
CPI/BTS 2 Programmation Web Fonctions & Includes Prog Web CPI/BTS2 – M. Dravet – 02/11/2003 Dernière modification: 02/11/2003.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Scripts et fonctions Instructions de contrôle
Master 1ère année Sécurité des Systèmes d’Information 1 Programmation en shell.
1 PHP 5 Notions fondamentales (niveau 1 cours #3) Formation continue – Cégep de Sainte-Foy François G Couillard.
GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 7 Neutralisation, redirection, décodage des paramètres,
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction à l’Informatique Licence SPI Mme Delmotte.
Visual Information Solutions IDL 7.0 Pour une utilisation optimale d’IDL.
Génie de la production automatisée GPA435 S.E. et prog. système Cours #6 Programmation bash (II) Jean-Phillipe Roberge, ing., M. ing. T. Wong, ing., Ph.D.
Transcription de la présentation:

GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie II 2014

GPA435, GPA – ÉTS, T. Wong Fonctions utilisateurs Nous pouvons rendre la programmation plus structurée en utilisant des fonctions Nous pouvons rendre la programmation plus structurée en utilisant des fonctions La syntaxe est: La syntaxe est: Nom_fonction () { commandes commandes} Une fonction utilisateur joue le rôle dune sous- routine. Une fonction utilisateur joue le rôle dune sous- routine. 2

GPA435, GPA – ÉTS, T. Wong Fonctions utilisateurs Caractéristiques des fonctions utilisateurs: Caractéristiques des fonctions utilisateurs: o Syntaxe nom_fonction () { commandes } o Définition des fonctions utilisateurs au début du fichier de commandes; o Prend préséance sur les commandes systèmes portant le même nom – Attention! Source de confusion! o Doit avoir un statut (valeur) de retour : exit n où n est un entier positif ( 0 OK,0 Erreur). Par défaut une fonction utilisateur retourne la valeur 0 comme statut de retour. 3

GPA435, GPA – ÉTS, T. Wong Fonctions utilisateurs Passage des paramètres dans une fonction utilisateur Passage des paramètres dans une fonction utilisateur o Par variables globales ERRNO=1234 gestion_erreur () { case "$ERRNO" in case "$ERRNO" in 0) ;; # pas d'erreur 0) ;; # pas d'erreur 101) echo "Répertoire inexistant" ;; 101) echo "Répertoire inexistant" ;; 102) echo "Permission d'écriture obligatoire";; 102) echo "Permission d'écriture obligatoire";; *) echo "Code d'erreur inconnu" *) echo "Code d'erreur inconnu" exit 1 exit 1 ;; ;; esac esac} while [ $ERRNO -ne 0 ] do repertoire; ERRNO=$? repertoire; ERRNO=$? gestion_erreur gestion_erreurdone 4 1) Le contenu de la variable globale ERRNO est visible par la fonction gestion_erreur() puisquelle a été déclarée avant la définition de la fonction. 2) La fonction gestion_erreur() peut traiter le contenu de la variable globale ERRNO.

GPA435, GPA – ÉTS, T. Wong Fonctions utilisateurs Passage des paramètres dans une fonction utilisateur Passage des paramètres dans une fonction utilisateur o Par paramètres de position gestion_erreur () { case "$1" in case "$1" in 0) ;; # pas d'erreur 0) ;; # pas d'erreur 101) echo "Répertoire inexistant" ;; 101) echo "Répertoire inexistant" ;; 102) echo "Permission d'écriture obligatoire";; 102) echo "Permission d'écriture obligatoire";; *) echo "Code d'erreur inconnu" *) echo "Code d'erreur inconnu" exit 1 exit 1 ;; ;; esac esac}ERRNO=123 while [ $ERRNO -ne 0 ] do repertoire; ERRNO=$? repertoire; ERRNO=$? gestion_erreur "$ERRNO" gestion_erreur "$ERRNO"done 5 1) Le contenu de la variable ERRNO est passé à la fonction gestion_erreur() comme un paramètre de position. 2) La fonction gestion_erreur() reçoit le contenu de la variable ERRNO dans sa variable de position $1.

GPA435, GPA – ÉTS, T. Wong Fonctions utilisateurs Passage des paramètres dans une fonction utilisateur Passage des paramètres dans une fonction utilisateur o Par paramètres de position o De façon générale: # définition de la fonction funcA () { # $# le nombre de paramètres de position # $* et la ligne des paramètres de position # $1 reçoit le contenu de $par1 # $2 reçoit le contenu de $par2 # $3 reçoit le contenu de $par3 # et ainsi de suite } # utilisation de la fonction funcA par1 par2 par3 6 Donc, pour une fonction utilisateur, les paramètres de position se comportent exactement comme un programme

GPA435, GPA – ÉTS, T. Wong Neutralisation des caractères Certains caractères ont une signification spéciale pour linterpréteur de commande Certains caractères ont une signification spéciale pour linterpréteur de commande Par exemple: Par exemple: o &, (, ), *, !, $, etc. Cependant, à cause du nombre limité de caractères disponibles, certaines commandes et programmes réutilisent ces mêmes caractères mais à dautres fin Cependant, à cause du nombre limité de caractères disponibles, certaines commandes et programmes réutilisent ces mêmes caractères mais à dautres fin Par exemple: Par exemple: o $ pour signifie la valeur monétaire; o () pour regrouper les expressions mathématiques; o etc. 7

GPA435, GPA – ÉTS, T. Wong Neutralisation des caractères Sans un mécanisme de contournement, ces caractères spéciaux seront interprétés dune façon erronée par linterpréteur de commande. Sans un mécanisme de contournement, ces caractères spéciaux seront interprétés dune façon erronée par linterpréteur de commande. Les commandes et programmes qui utilisent ces caractères spéciaux ne pourront pas sexécuter correctement. Les commandes et programmes qui utilisent ces caractères spéciaux ne pourront pas sexécuter correctement. Doù la nécessité de neutraliser la signification particulière de ces caractères spéciaux pour linterpréteur de commande. Doù la nécessité de neutraliser la signification particulière de ces caractères spéciaux pour linterpréteur de commande. 8

GPA435, GPA – ÉTS, T. Wong Neutralisation des caractères Un exemple Un exemple Nous désirons afficher la chaîne de caractère « Lola & Lilo ». Voici le résultat: Nous désirons afficher la chaîne de caractère « Lola & Lilo ». Voici le résultat: 9 Linterpréteur de commande a interprété ceci: 1.Exécuter echo Lola & ( echo Lola en arrière-plan); 2.Exécuter Lilo comme une commande.

GPA435, GPA – ÉTS, T. Wong Neutralisation des caractères Un exemple Un exemple Nous désirons afficher la chaîne de caractère « Lola & Lilo ». Voici le résultat: Nous désirons afficher la chaîne de caractère « Lola & Lilo ». Voici le résultat: 10 Le méta-caractère & est neutralisé par le symbole \ qui agit comme un neutralisateur. Linterpréteur de commande considérera \& comme le caractère & et non pas le symbole pour lexécution en arrière-plan.

GPA435, GPA – ÉTS, T. Wong Neutralisation des caractères Ainsi, le symbole \ permet la neutralisation du caractère qui le suit. Ainsi, le symbole \ permet la neutralisation du caractère qui le suit. 11 Le symbole \ a effectivement neutralisé le premier méta-caractère & mais pas le 2 e. On dit que \ est un neutralisateur de simple (1 seul) caractère.

GPA435, GPA – ÉTS, T. Wong Neutralisation des caractères Nous pouvons neutraliser plus dun caractère à la fois par les guillemets et les apostrophes. Nous pouvons neutraliser plus dun caractère à la fois par les guillemets et les apostrophes. Guillemets Guillemets o Neutralise la signification spéciale du caractère ESPACE; o Permet la substitution des variables et des commandes; o Permet lutilisation du neutralisateur \. 12 Bug 1: $CAD est interprété comme le contenu de la variable CAD et non pas dollar canadien Bug 2: Le caractère ESPACE a séparé la chaîne de caractères en 2 parties Lutilisation des guillemets et de \ permet de solutionner ce problème.

GPA435, GPA – ÉTS, T. Wong Neutralisation des caractères Nous pouvons neutraliser plus dun caractère à la fois par les guillemets et les apostrophes. Nous pouvons neutraliser plus dun caractère à la fois par les guillemets et les apostrophes. Apostrophes Apostrophes o Neutralise la signification spéciale du caractère ESPACE; o Empêche la substitution des variables et des commandes; o Neutralise le neutralisateur \. 13 Les apostrophes ont effectivement neutralisé le neutralisateur \ et empêché la substitution de la variable CAD.

GPA435, GPA – ÉTS, T. Wong Neutralisation des caractères Dautres exemples qui aident à la compréhension de la neutralisation des méta- caractères Dautres exemples qui aident à la compréhension de la neutralisation des méta- caractères 14 gpa435> MACHINE=`hostname` gpa435 > echo La machine \'$MACHINE\' est en panne La machine 'my-ubuntu' est en panne gpa435 > echo La machine "'$MACHINE'" est en panne La machine 'my-ubuntu' est en panne gpa435 > echo La machine '$MACHINE' est en panne La machine $MACHINE est en panne gpa435 > echo "La machine '$MACHINE' est en panne" La machine 'my-ubuntu' est en panne gpa435 > echo 'La machine $MACHINE est en panne' La machine $MACHINE est en panne gpa435 > echo 'La machine '$MACHINE' est en panne' La machine my-ubuntu est en panne

GPA435, GPA – ÉTS, T. Wong Commandes exec(1) et trap(1) Dans un programme, la commande exec(1) permet lexécution dune commande sans la création dun nouveau processus. Dans un programme, la commande exec(1) permet lexécution dune commande sans la création dun nouveau processus. Vous pouvez donc passer des paramètres du programme à la commande à exécuter. Vous pouvez donc passer des paramètres du programme à la commande à exécuter. Attention! Ce nest pas un appel de sous- routine car le contrôle ne revient pas au programme. Attention! Ce nest pas un appel de sous- routine car le contrôle ne revient pas au programme. 15

GPA435, GPA – ÉTS, T. Wong Commandes exec(1) et trap(1) Voici un exemple: Voici un exemple: 16 La ligne exec date exécute la commande date et lui passe le contrôle. Résultat: On voit que la ligne echo "Fin du programme" nest jamais exécutée.

GPA435, GPA – ÉTS, T. Wong Commandes exec(1) et trap(1) La commande exec(1) sert aussi à rediriger les entrées-sorties standard dune façon globale. La commande exec(1) sert aussi à rediriger les entrées-sorties standard dune façon globale. Différentes syntaxes: Différentes syntaxes: exec no_desc> nom_fich exec no_desc> nom_fich exec no_desc>&no_desc exec no_desc>&no_desc exec no_desc>> nom_fich exec no_desc>> nom_fich exec no_desc< nom_fich exec no_desc< nom_fich exec no_desc<&no_desc exec no_desc<&no_desc 17 Légende: no_desc : numéro descripteur nom_fich : nom de fichier >, >&, >>,, >&, >>, <, <& : opérateurs de redirection

GPA435, GPA – ÉTS, T. Wong Commandes exec(1) et trap(1) Un exemple: Un exemple: 18 À partir de ce point, tous les messages derreur seront envoyés dans un fichier nommé errmsg.txt. On pourra en faire de même pour rediriger dune façon globale la sortie standard et lentrée standard en utilisant les opérateurs de redirection appropriés.

GPA435, GPA – ÉTS, T. Wong Commandes exec(1) et trap(1) La commande trap(1) est fort utile pour la programmation La commande trap(1) est fort utile pour la programmation La syntaxe: La syntaxe: trap commandes signaux o commandes est un ensemble de commandes Linux; o signaux sont des numéros (entiers). À la réception dun signal par le programme, les commandes entre apostrophes sont exécutées. À la réception dun signal par le programme, les commandes entre apostrophes sont exécutées. 19

GPA435, GPA – ÉTS, T. Wong Commandes exec(1) et trap(1) Quelle est lutilité de trap(1) ? Quelle est lutilité de trap(1) ? Pour réaliser une fin de programme en « beauté » Pour réaliser une fin de programme en « beauté » o Advenant une erreur fatale, le programme pourra effacer ses fichiers temporaires, arrêter ses processus fils, fermer ses ports internet, afficher un message durgence, etc. Pour empêcher certains évènements inappropriés de faire avorter le programme Pour empêcher certains évènements inappropriés de faire avorter le programme o Le disque plein, la clé USB nest plus disponible, le programme change son état par les touches ctrl-c, ctrl-y, ctrl- z, etc. 20

GPA435, GPA – ÉTS, T. Wong Commandes exec(1) et trap(1) Voici quelques signaux disponibles Voici quelques signaux disponibles 21 SignalSignification ctrl-c Interrompre le programme ctrl-y Suspendre (bloque) le programme lorsquil tentera de lire lentrée standard ctrl-z Suspendre (bloque) le programme 1 Couper le lien logique avec le terminal 2 Interrompre le programme 9 Tuer (kill) le programme 15 Fin (normale) du programme 17, 19, 23 Arrêter le programme Les signaux 9, 17, 19 et 23 ne peuvent être interceptés par trap(1), Saviez-vous pourquoi?

GPA435, GPA – ÉTS, T. Wong Commandes exec(1) et trap(1) Exemple dutilisation de trap(1) Exemple dutilisation de trap(1) 22 Ce programme ne fait rien pendant 100 secondes (sleep 100). Envoyez le signal ctrl-c au programme. La commande trap(1) interceptera le signal et affiche un message à la sortie standard.

GPA435, GPA – ÉTS, T. Wong Commandes exec(1) et trap(1) Exemple dutilisation de trap(1) Exemple dutilisation de trap(1) 23 Ce programme ne fait rien pendant 100 secondes (sleep 100). Envoyez le signal ctrl-z pour suspendre le programme. Entrer la commande bg pour exécuter le programme en arrière-plan. Entrer la commande fg pour exécuter le programme en avant-plan À la fin du programme, trap(1) affiche un message.

GPA435, GPA – ÉTS, T. Wong Fin de la deuxième partie du chapitre 6