Problème avec les signaux - Shell/Batch - Programmation
Marsh Posté le 20-12-2011 à 12:36:51
salut,
La boucle n'a pour but que de simuler la durée d'un script.
En fait, le script-exercice se déroule dans la commande trap.
Je te suggère d'y incrémenter un compteur.
Marsh Posté le 20-12-2011 à 13:25:09
Merci pour ta réponse !
Mais pour mettre un compteur, je suis quand même obligé de mettre une condition du type "si le signal est reçu pour la 2ième fois, alors affiche signal reçu fin" ? Je comprends pas trop comment l'incrémenter dans l'instruction trap.
Suis-je sur la bonne voie ?
Code :
|
Marsh Posté le 20-12-2011 à 13:58:44
expr est un programme externe non-indispensable (le shell peut effectuer l'évaluation arithmétique par lui-même) !
au lieu d'utiliser trap pour ne faire que l'affichage, tu peux y incrémenter i, et l'y tester pour afficher l'un ou l'autre message, et quitter.
Marsh Posté le 20-12-2011 à 18:11:46
Je copie ici ma réponse à ton MP, car ça pourrait être utile à d'autres plus tard.
ton trap se contente de faire un echo, mais il peut contenir plus : une liste de commandes, un appel à une fonction, ou à un autre script.
je t'explique la manière portable, bash l'accepte (ça fonctionnera), mais il est plus souple.
les évaluations arithmétiques se font entre doubles-parenthèses
Code :
|
fais d'autres essais, d'autres opérations...
les tests se font entre crochets simples
Code :
|
va afficher "oh"
si tu ajoutes l'incrémentation (vue précédemment) après echo oh, la deuxième fois que le test sera effectué "$increment" vaudra 1, et alors il affichera "ouais"
Marsh Posté le 20-12-2011 à 12:21:55
Bonjour à tous
Je tiens d'abord à vous prévenir que je suis un novice complet en informatique
J'ai un petit exo à faire et je bloque un peu.
Il faut donc écrire un script qui affiche "SIGUSR1 recu" lorsqu'il reçoit un signal USR1 pour la première fois et se termine après avoir affiché "SIGUSR1 fin" lorsque ce n'est pas la première fois. Il est précisé dans la consigne que lors de la réception du premier signal SIGUSR1, le script doit redéfinir le traitement à effectuer (là je comprends pas trop...).
J'ai commencé à chercher avec des boucles mais sans succès, je suis donc resté sur ça
Merci à ceux qui auront pris le temps de m'aider (s'il y en a)