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.

Slides:



Advertisements
Présentations similaires
La boucle for : init7.c et init71.c
Advertisements

Synchronisation des processus père - fils
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,
CPI/BTS 2 Programmation Web Introduction au PHP
Systèmes d’information
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)
Version 2007Administration système Linux Francis Rogard 1 SYSTEME DEXPLOITATION LINUX La ligne de commandes.
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.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
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 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.
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,
Utilisation avancée de linux
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
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),
Variables et environnement utilisateur W. Barhoumi.
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Module : Pages Web Dynamiques (Production Électronique Avancée)
Signaux Il s'agit de messages asynchrones envoyés à un processus
Elaboré par Ahmed BESSAIDI
 Systèmes d’exploitation et programmation de systèmes -GPA435- Cours #6: Éléments de programmation (Partie 3) Enseignant: Jean-Philippe Roberge Jean-Philippe.
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,
Les Structures simples
Master 1ère année Sécurité des Systèmes d’Information 1 Programmation en shell.
Initiation à la navigation sur Internet et à l’utilisation de la Plate-forme l’enseignement à distance Moodle » Issa saley.
 Les sémioticiens étendent le concept de signe à toute chose porteuse de signification. Pour qu’il y ait signe, il faut quelqu’un pour interpréter. 
Motiver les élèves avec des échéanciers automatisés et personnalisés AQIFGA 2015 Cette présentation de David Larochelle est mise à disposition sous licence.
Mediator 9 - Un outil de développement multimédia 3AC Techno/Informatique.
Développement d’application avec base de données Semaine 3 : Modifications avec Entité Framework Automne 2015.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 10 Support de cours rédigé par Bernard COFFIN Université.
BTN4U Gérer vos réservations du bout des doigts. BTN4U Gérer les réservations du bout des doigts Consultable toujours et partout Possibilité de multi-tâches.
UNIX AVANCE Yves PAGNOTTE – Janvier – QUELQUES RAPPELS SUR LES SYSTEMES D’EXPLOITATION 1.
1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions.
Introduction à la programmation
Chapitre 4 Gestion des disques Module S41. Plan du cours 1. Utilisation de l'outil Gestion des disques 2. Utilisation des disques de base 3. Utilisation.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 1 Support de cours rédigé par Bernard COFFIN Université.
G. Botti Service de l ’Information Médicale Pr M. Fieschi Hôpital Timone-adultesMarseille le 13 novembre 2000 Problématique du codage Langage, communication,
FACTORY systemes Module 5 Page 5-1 Les outils clients Wonderware FORMATION InSQL 7.0.
1 Les logiciels en général sont classés en deux familles:  Logiciels de base  Logiciels d’applications (applications) 2.
Initiation aux bases de données et à la programmation événementielle Outil de création des tables Support de TD rédigé par Bernard COFFIN Université Paris.
Projet Personnel (Epreuve 6) Projet réalisé dans le cadre de mon épreuve E6 au sein de mon alternance au conseil départemental du val de marne Arnaud PICANO.
La création des données d’exemplaire pour un exemplarisateur Sudoc.
Les méthodes de tests Les grands principes pour réaliser des tests efficaces.
Les inéquations Mathématiques 9 Dans ce chapitre, tu vas apprendre à représenter des ensembles de nombres à l’aide de diagrammes et de symboles.
Introduction à la Programmation Orientée Objet H.GATI.
La création des données d’exemplaire pour un responsable de Centre Régional.
Les bases de données CINAHL
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – RAPPELS SUR UNIX DE BASE.
Zitouni amani et imen Ben Belgacem 1 Projet de fin d’année sur le contrôle d’accès par la technologie RFID Zitouni Amani Ben Belgacem Imen Encadrer par.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 7 Support de cours rédigé par Bernard COFFIN Université.
Chapitre IV Architecture de VonNeumann. I/ Introduction John VonNeumann est un mathématicien d’origine Hongroise qui a participé au projet Manhattan.
Modes de Marches et d’Arrêts
CSI 3531 Systèmes d’exploitation Nathalie Japkowicz 1.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
TRESORERIE Cash Call Envoi de fonds Comptabilisation (Formation des comptables/projets) 1.
Informatique 2A Langage C 3 ème séance.
IFT359 – Programmation fonctionnelle Thème #8 Création de nouvelles formes syntaxiques 1.
Cours de Langage C Les structures
FORMATIONENT/SVT Saint Orens Vendredi 15 novembre 2013.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – COMMUNICATION INTER PROCESSUS : TUBES.
Chapitre 9 Gestion des maîtres d'opérations
Cours de Langage C Récursivité. Objectifs de la séance 11 Connaître la récursivité. Mesurer un temps d’exécution. 2.
Les Fichiers M me DJEBOURI. D. Faculté de Médecine salle informatique Année universitaire الجمهورية الجزائرية.
AUTOMATISME Chapitre 2: Le GRAFCET.
Algorithmique demander jeu du pendu.
PROGRAMMATION ET ENSEIGNEMENT
Transcription de la présentation:

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. P. Ouimet, ing. Jr. 1

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes Cours #6 Programmation bash (II) Motivation Tout comme l’apprentissage d’une langue étrangère, la programmation bash passe par la reconnaissance de l’apport des instructions disponibles. Leur particularité et idiosyncrasie seront dévoilées par la pratique et par des applications. Objectifs d’apprentissage Reconnaître une fonction utilisateur; Appliquer la neutralisation des méta-caractères Rendre un programme plus robuste par exec et trap. Those who don't understand Linux are doomed to reinvent it, poorly. - Anonyme Those who don't understand Linux are doomed to reinvent it, poorly. - Anonyme 2 Objectifs Cogito Neutralisation Exec et trap Exercices Lecture Fonctions

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes Programmation bash (II) 1. Comment peut-on … Objectifs Cogito Comment lire chacun des mots contenus dans un fichier?  Pourquoi voulez-vous faire cela? Peu importe, voici une façon: 3 Contenu du fichier MaVie.txt La boucle qui affiche les mots du fichier MaVie.txt La variable LIGNE contient tour à tour les mots du fichier MaVie.txt. Techniquement, cette boucle for – do – done affiche à la sortie standard des caractères séparés par un ou des espaces. Le caractère espace est un séparateur de champ contenu dans la variable système IFS (Internal Field Separator). Neutralisation Exec et trap Exercices Lecture Fonctions

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes Programmation bash (I) 1. Comment peut-on … Objectifs Cogito OK. Comment lire des lignes d’un fichier alors?  Ah! C’est beaucoup mieux… 4 Dans cette boucle, on redirige l’entrée standard de la commande read à un fichier nommé MaVie.txt. Observer l’emplacement de l’opérateur de redirection ( < ). Il est placé à l’extérieur de la boucle while – do – done. Qu’arrive-t-il si la boucle est écrite: While read LIGNE < MaVie.txt; do echo "$LIGNE" ; done Neutralisation Exec et trap Exercices Lecture Fonctions

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 2. Fonctions utilisateurs Objectifs À l’instar de bien des langages de programmation, nous pouvons rendre la programmation plus structurées en utilisant des fonctions; La syntaxe d’une fonction utilisateur est: nom_fonction () { commandes } ou encore nom_fonction () { commandes } Une fonction utilisateur jour le rôle d’une sous-routine. 5 Cogito Fonctions Programmation bash (II) Neutralisation Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 2. Fonctions utilisateurs Objectifs Caractéristiques des fonctions utilisateurs:  Définir les fonctions utilisateurs au début du fichier de commandes;  Prend préséance sur les commandes systèmes portant le même nom – Attention! Source de confusion!  Doit avoir un statut 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; nom_fonction () { commandes # La valeur est un code d’erreur… exit 3 } 6 Cogito Fonctions Programmation bash (II) Neutralisation Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 2. Fonctions utilisateurs Objectifs Passage des paramètres à une fonction  Par variables globales#!/bin/bashERRNO=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 7 Cogito Fonctions Programmation bash (II) 2) La fonction gestion_erreur() peut traiter le contenu de la variable globale ERRNO. 1) Le contenu de la variable globale ERRNO est visible par la fonction gestion_erreur() puisqu’elle a été déclarée avant l’appel de la fonction. Neutralisation Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 2. Fonctions utilisateurs Objectifs Passage des paramètres à une fonction  Par paramètres de position#!/bin/bash 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= while [ $ERRNO -ne 0 ] do repertoire; ERRNO=$? repertoire; ERRNO=$? gestion_erreur "$ERRNO" gestion_erreur "$ERRNO"done 8 Cogito Fonctions Programmation bash (II) 2) La fonction gestion_erreur() reçoit le contenu de la variable ERRNO dans sa variable de position $1. 1) Le contenu de la variable globale ERRNO est passé à la fonction gestion_erreur() comme un paramètre de position. Neutralisation Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 2. Fonctions utilisateurs Objectifs Passage des paramètres à une fonction  Par paramètres de position # 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 9 Cogito Fonctions Programmation bash (II) Donc, pour une fonction utilisateur, les paramètres de position se comportent exactement comme ceux d’un programme. Neutralisation Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 3. Neutralisation des caractères – première visite Objectifs Certains caractères ont une signification spéciale pour l’interpréteur de commandes  Par exemple, &, (, ), {, }, *, !, |, \, $, etc. Cependant, à cause du nombre limité de caractères disponibles, certaines commandes et programmes réutilisent ces mêmes caractères mais à d’autres fins  Par exemple: $ pour signifier la valeur monétaires; () pour regrouper des expressions mathématiques et/ou logiques; * pour représenter l’opérateur de multiplication; " pour représenter l’unité impériale de mesure; >, < pour représenter les opérateurs relationnelles; Etc. 10 Cogito Neutralisation Fonctions Programmation bash (II) Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmesObjectifs Sans un mécanisme de contournement, ces caractères spéciaux seront interprétés d’une façon erronée par l’interpréteur de commande Les commandes et programmes (sans compter les utilisateurs) qui ont besoin de ces caractères spéciaux ne pourront pas s’exécuter correctement. D’où la nécessiter de neutraliser la signification particulière de ces caractères spéciaux pour l’interpréteur de commandes. 11 Cogito Neutralisation Fonctions Programmation bash (II) Wow! 5 * 3 = 15 donne tout ça? 3. Neutralisation des caractères – première visite Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmesObjectifs Un exemple  Nous désirons afficher la chaîne de caractères « Lola & Lilo » à la sortie standard. Voici le résultat L’interpréteur de commandes a interprété ceci: 1.Exécuter echo Lola & ( echo Lola en arrière-plan); 2.Exécuter Lilo comme une commande. 12 Cogito Neutralisation Fonctions Programmation bash (II) 3. Neutralisation des caractères – première visite Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmesObjectifs Un exemple  Nous désirons afficher la chaîne de caractères « Lola & Lilo » à la sortie standard. Voici le résultat: Le méta-caractère & est neutralisé par le symbole \ qui agit comme un neutralisateur; L’interpréteur de commande considérera \& comme le simple caractère esperluette ( & ) et non comme le symbole pour exécuter en arrière-plan d’une commande. 13 Cogito Neutralisation Programmation bash (II) Les neutralisateurs 3. Neutralisation des caractères – première visite Fonctions Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmesObjectifs Ainsi, le symbole \ permet la neutralisation du caractère qui le suit. Le symbole \ a effectivement neutralisé le premier méta-caractère esperluette ( & ) mais pas le second; On dit que \ est un neutralisateur de simple (1 seul) caractère. 14 Cogito Neutralisation Programmation bash (II) 3. Neutralisation des caractères – première visite Fonctions Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmesObjectifs Nous pouvons neutraliser plus d’un caractère à la fois par l’utilisation des guillemets et des apostrophes  Guillemets o Neutralise la signification spéciale du caractère ESPACE; o Permet la substitution des variables et des commandes; o Permet l’utilisation du neutralisateur \. 15 Cogito Neutralisation Programmation bash (II) Bug 2: $CAD est interprété comme le contenu de la variable CAD et non pas dollar canadien Bug 1: Le caractère ESPACE joue le rôle de séparateur. Seulement 25 est assigné à la variable PRIX. L’utilisation des guillemets et de \ permet de solutionner ce problème. 3. Neutralisation des caractères – première visite Fonctions Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmesObjectifs Nous pouvons neutraliser plus d’un caractère à la fois par l’utilisation des guillemets et des apostrophes  Apostrophes o Neutralise la signification spéciale du caractère ESPACE; o Empêche la substitution des variables et des commandes; o Neutralise du neutralisateur \. 16 Cogito Neutralisation Programmation bash (II) Les apostrophes ont effectivement neutralisé le neutralisateur \ et ont empêché la substitution de la variable CAD. ‘ ‘ 3. Neutralisation des caractères – première visite Fonctions Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmesObjectifs D’autres exemples qui aident à la compréhension de la neutralisation des méta-caractères 17 Cogito Neutralisation Programmation bash (II) 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 3. Neutralisation des caractères – première visite Fonctions Exec et trap Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 4. exec et trap Objectifs Ce deux commandes sont des commandes internes de bash; Dans un programme, la commande exec permet l’exécution d’une commande sans la création d’un nouveau processus; De même, il n’y a pas de création d’un interpréteur enfant pour l’exécution de la commande; Attention! Ce n’est pas un appel de sous-routine car le contrôle ne revient pas au programme. 18 Cogito Neutralisation Programmation bash (II) Exec et trap 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" n’est jamais exécutée. Fonctions Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 4. exec et trap Objectifs La commande exec sert aussi à rediriger les entrées-sorties standard d’une façon globale; Différentes syntaxes:  exec no_desc> nom_fich  exec no_desc>&no_desc  exec no_desc>> nom_fich  exec no_desc< nom_fich  exec no_desc<&no_desc 19 Cogito Neutralisation Programmation bash (II) Exec et trap Légende: no_desc : numéro de descripteur nom_fich : nom d’un fichier >, >&, >>, <, <& : opérateurs de redirection Sans doute la fonction la plus utile de la commande exec. La redirection réalisée par exec prend l’effet après son exécution et ce, jusqu’à la fin du fichier des commandes. Fonctions Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 4. exec et trap Objectifs Un exemple: 20 Cogito Neutralisation Programmation bash (II) Exec et trap À partir de ce point, tous les messages d’erreur seront envoyés dans un fichier nommé errmsg.txt. On pourra en faire de même pour rediriger d’une façon globale la sortie standard et l’entrée standard en utilisant les opérateurs de redirection appropriés. Fonctions Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 4. exec et trap Objectifs La commande trap est fort utile pour la programmation; La syntaxe; trap ‘commandes’ signaux Où commandes est un ensemble de commandes bash et signaux sont des numéros (entiers). À la réception d’un signal par le programme, les commandes entre apostrophes sont automatiquement exécutées par bash. L’utilité de la commande trap  Pour réaliser une fin de programme en « beauté » (graceful exit) o Advenant d’une erreur fatale, le programme pourra effacer ses fichiers temporaires, arrêter ses processus fils, afficher un message d’urgence, etc.  Capter les signaux en provenance de l’utilisateur o Certaines combinaisons de touches envoient de signaux logiciels qui peuvent être captés par trap. 21 Cogito Neutralisation Programmation bash (II) Exec et trap On dit que l’utilisation de trap permet d’augmenter la robustesse d’un programme. Fonctions Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 4. exec et trap Objectifs Signaux disponibles d’un système Linux/UNIX 22 Cogito Neutralisation Programmation bash (II) Exec et trap Ces signaux sont conforme aux standards POSIX. Par contre, la valeur numérique des signaux peut varier d’une architecture matérielle à l’autre. Les signaux SIGRTMIN et SIGRTMAX sont réservés pour des signaux de type temps-réel. Voir le document PDF « signals.pdf », disponible sur site moodle du cours, pour connaître la signification de ces signaux. Fonctions Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 4. exec et trap Objectifs Voici quelques signaux les plus communs 23 Cogito Neutralisation Programmation bash (II) Exec et trap Signal (no) Signification SIGHUP (1)Lien logique avec le terminal coupé. SIGINT (2)Signal d’interruption via clavier (ctrl-c). SIGTERM (15)Terminaison si possible du processus ( kill ). SIGKILL (9)Terminaison immédiate du processus ( kill -9 ). SIGSTOP (19)Suspension du programme (voir SIGCONT). SIGCONT (18)Continuation du programme (voir SIGSTOP). SIGTSTP (20)Signal de suspension via clavier (ctrl-z) SIGUSR1 (10)Signal défini par l’utilisateur (programmeur). SIGUSR2 (12)Signal défini par l’utilisateur (programmeur). Attention! Dans cette liste Les signaux 9, et 19 ne peuvent être interceptés par trap, Saviez-vous pourquoi? Fonctions Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 4. exec et trap Objectifs Voici un exemple de « graceful exit » 24 Cogito Neutralisation Programmation bash (II) Exec et trap Intercepter le signal SIGINT, touches ctrl-c par l’utilisateur. Programme principal. Pour les besoins de cet exemple, ce programme ne fait qu’augmenter le compte de la variable à toutes les secondes. Programme en exécution puis l’utilisateur appuie sur les touches ctrl-c. La commande trap intercepte le signal et affiche à la sortie standard un message. Fonctions Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 4. exec et trap Objectifs Voici un exemple de « graceful exit » 25 Cogito Neutralisation Programmation bash (II) Exec et trap Intercepter le signal SIGINT, touches ctrl-c par l’utilisateur. Traitement du signal SIGINT par une fonction utilisateur. Le reste du programme est identique à l’exemple précédent. Fonctions Exercices Lecture

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 4. exec et trap Objectifs Voici un exemple où un processus parent crée et exécute 2 processus enfant en arrière-plan. À la réception du signal SIGINT par le processus parent, ce dernier provoque la fin d’exécution de ses deux enfants. 26 Cogito Neutralisation Programmation bash (II) Exec et trap Exercices Lecture Ici le parent crée 2 processus enfants et s’exécutent en arrière- plan. La variable pid contient les numéro d’identification des processus. À la réception du signal SIGINT (ctrl-c), le processus parent termine les enfants par la commande kill. Fonctions

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 9. Exercices 1.Qu’aura comme effet le code suivant: rm –r travail mkdir travail for ((i =1; i <=3; i++)) do echo " `expr $i \* 4`" >>./travail/Fichier$i done echo “FIN" >>./travail/Fichier* chmod 644./travail/Fichier* 2.Donner le contenu des fichiers créés dans 1. Objectifs 27 Programmation bash (II) Cogito Neutralisation Exec et trap Exercices Lecture Fonctions

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 9. Exercices 3.Qu’aura comme effet le code suivant: #!/bin/bash rm FichierSortie FichierErreur 2>/dev/null exec 5>FichierSortie exec 6>FichierErreur exec 3>&5 exec 4>&6 if [ $# -ne 0 ]; then exec 2>&4 echo "Erreur! Ce script ne prend pas de paramètres..." >&2 exit 1 fi echo "Bravo! Vous avez utilisé le programme convenablement..." >&3 exit 0 Objectifs 28 Programmation bash (II) Cogito Neutralisation Exec et trap Exercices Lecture Fonctions

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes 9. Exercices 4.Quel est le résultat de ces lignes de commandes? ETS_Web=" Web_mon_Ecole="ETS_Web" ping ${!Web_mon_Ecole} 5.Quels sont les résultats de des lignes de commandes? w=date echo –e "Le resultat est:\n $(w)" echo –e "Le resultat est:\n $($w)" Pourquoi? Objectifs 29 Programmation bash (II) Cogito Neutralisation Exec et trap Exercices Lecture Fonctions

Cours #6 GPA435 Systèmes d'exploitation et programmation de systèmes Fin du cours #6 Notes de cours GPA435, chapitre 5 et 6. Chapitre 8: Mikkey, M. G BASH Programming − Introduction HOW−TO. Disponible: HOWTO.pdf HOWTO.pdf Robbins, D Bash by example, Part 1. Disponible Chapitre 3: Garrels, M Bash Guide for Beginners. Disponible Shell Parameter Expansion. GNU. En ligne >. Consulté le 31 juillet Expansion.html Command substitution. GNU. En ligne >. Consulté le 31 juillet hackers.org/syntax/expansion/cmdsubst 30 Objectifs Programmation bash (II) Cogito Neutralisation Exec et trap Exercices Lecture Fonctions